DragonECS/src/Builtin/DefaultRunners.cs

55 lines
1.5 KiB
C#
Raw Normal View History

2023-03-12 02:02:39 +08:00
namespace DCFApixels.DragonECS
{
2023-03-12 20:45:18 +08:00
public interface IEcsPreInitSystem : IEcsSystem
2023-03-12 02:02:39 +08:00
{
public void PreInit(EcsSession session);
}
2023-03-12 20:45:18 +08:00
public interface IEcsInitSystem : IEcsSystem
2023-03-12 02:02:39 +08:00
{
public void Init(EcsSession session);
}
2023-03-12 20:45:18 +08:00
public interface IEcsRunSystem : IEcsSystem
2023-03-12 02:02:39 +08:00
{
public void Run(EcsSession session);
}
2023-03-12 20:45:18 +08:00
public interface IEcsDestroySystem : IEcsSystem
2023-03-12 02:02:39 +08:00
{
public void Destroy(EcsSession session);
}
2023-03-16 01:49:14 +08:00
public interface IEcsBaseSystem :
2023-03-12 02:02:39 +08:00
IEcsInitSystem,
IEcsRunSystem,
IEcsDestroySystem
{ }
public sealed class EcsPreInitRunner : EcsRunner<IEcsPreInitSystem>, IEcsPreInitSystem
{
void IEcsPreInitSystem.PreInit(EcsSession session)
{
foreach (var item in targets) item.PreInit(session);
}
}
public sealed class EcsInitRunner : EcsRunner<IEcsInitSystem>, IEcsInitSystem
{
void IEcsInitSystem.Init(EcsSession session)
{
foreach (var item in targets) item.Init(session);
}
}
public sealed class EcsRunRunner : EcsRunner<IEcsRunSystem>, IEcsRunSystem
{
void IEcsRunSystem.Run(EcsSession session)
{
foreach (var item in targets) item.Run(session);
}
}
public sealed class EcsDestroyRunner : EcsRunner<IEcsDestroySystem>, IEcsDestroySystem
{
void IEcsDestroySystem.Destroy(EcsSession session)
{
foreach (var item in targets) item.Destroy(session);
}
}
}