DragonECS-Unity/src/Buildin/UnityGameCyclieProcesses.cs

142 lines
3.9 KiB
C#
Raw Normal View History

2024-03-09 03:35:01 +08:00
using DCFApixels.DragonECS.RunnersCore;
using DCFApixels.DragonECS.Unity.Internal;
2023-04-24 16:48:26 +08:00
namespace DCFApixels.DragonECS
{
2024-03-09 03:35:01 +08:00
[MetaName(nameof(DrawGizmos))]
[MetaColor(MetaColor.Orange)]
2023-06-16 11:54:41 +08:00
public interface IEcsGizmosProcess : IEcsProcess
{
2024-03-09 03:35:01 +08:00
public void DrawGizmos();
2023-06-16 11:54:41 +08:00
}
2024-03-09 03:35:01 +08:00
[MetaName(nameof(LateRun))]
[MetaColor(MetaColor.Orange)]
public interface IEcsLateRunProcess : IEcsProcess
2023-06-16 11:54:41 +08:00
{
2024-03-09 03:35:01 +08:00
public void LateRun();
2023-06-16 11:54:41 +08:00
}
2024-03-09 03:35:01 +08:00
[MetaName(nameof(FixedRun))]
[MetaColor(MetaColor.Orange)]
public interface IEcsFixedRunProcess : IEcsProcess
{
2024-03-09 03:35:01 +08:00
public void FixedRun();
}
2024-03-09 03:35:01 +08:00
public static class UnityProcessExtensions
{
2024-03-09 03:35:01 +08:00
public static void DrawGizmos(this EcsPipeline pipeline)
{
pipeline.GetRunnerInstance<EcsLateGizmosRunner>().DrawGizmos();
}
2024-03-03 03:51:49 +08:00
public static void LateRun(this EcsPipeline pipeline)
{
2024-03-09 03:35:01 +08:00
pipeline.GetRunnerInstance<EcsLateRunRunner>().LateRun();
}
2023-04-24 16:48:26 +08:00
public static void FixedRun(this EcsPipeline pipeline)
{
2024-03-09 03:35:01 +08:00
pipeline.GetRunnerInstance<EcsFixedRunRunner>().FixedRun();
2023-04-24 16:48:26 +08:00
}
}
2024-03-09 03:35:01 +08:00
}
namespace DCFApixels.DragonECS.Unity.Internal
{
2023-04-24 16:48:26 +08:00
2024-03-09 03:35:01 +08:00
[MetaColor(MetaColor.Orange)]
public class EcsLateGizmosRunner : EcsRunner<IEcsGizmosProcess>, IEcsGizmosProcess
{
2023-06-16 11:54:41 +08:00
#if DEBUG && !DISABLE_DEBUG
2024-03-09 03:35:01 +08:00
private EcsProfilerMarker[] _markers;
2023-06-16 11:54:41 +08:00
#endif
2024-03-09 03:35:01 +08:00
public void DrawGizmos()
{
2023-06-16 11:54:41 +08:00
#if DEBUG && !DISABLE_DEBUG
2024-03-09 03:35:01 +08:00
for (int i = 0; i < Process.Length; i++)
{
using (_markers[i].Auto())
2023-06-16 11:54:41 +08:00
{
2024-03-09 03:35:01 +08:00
Process[i].DrawGizmos();
2023-06-16 11:54:41 +08:00
}
2024-03-09 03:35:01 +08:00
}
2023-06-16 11:54:41 +08:00
#else
2024-03-09 03:35:01 +08:00
foreach (var item in targets) item.DrawGizmos();
2023-06-16 11:54:41 +08:00
#endif
2024-03-09 03:35:01 +08:00
}
2023-06-16 11:54:41 +08:00
#if DEBUG && !DISABLE_DEBUG
2024-03-09 03:35:01 +08:00
protected override void OnSetup()
{
_markers = new EcsProfilerMarker[Process.Length];
for (int i = 0; i < Process.Length; i++)
2023-06-16 11:54:41 +08:00
{
2024-03-09 03:35:01 +08:00
_markers[i] = new EcsProfilerMarker($"{Process[i].GetType().Name}.{nameof(DrawGizmos)}");
2023-06-16 11:54:41 +08:00
}
}
2024-03-09 03:35:01 +08:00
#endif
}
2023-06-16 11:54:41 +08:00
2024-03-09 03:35:01 +08:00
[MetaColor(MetaColor.Orange)]
public class EcsLateRunRunner : EcsRunner<IEcsLateRunProcess>, IEcsLateRunProcess
{
2023-04-07 05:09:20 +08:00
#if DEBUG && !DISABLE_DEBUG
2024-03-09 03:35:01 +08:00
private EcsProfilerMarker[] _markers;
#endif
2024-03-09 03:35:01 +08:00
public void LateRun()
{
2023-04-07 05:09:20 +08:00
#if DEBUG && !DISABLE_DEBUG
2024-03-09 03:35:01 +08:00
for (int i = 0; i < Process.Length; i++)
{
using (_markers[i].Auto())
2023-04-24 16:48:26 +08:00
{
2024-03-09 03:35:01 +08:00
Process[i].LateRun();
2023-04-24 16:48:26 +08:00
}
2024-03-09 03:35:01 +08:00
}
2023-04-24 16:48:26 +08:00
#else
2024-03-09 03:35:01 +08:00
foreach (var item in targets) item.LateRun();
2023-04-24 16:48:26 +08:00
#endif
2024-03-09 03:35:01 +08:00
}
2023-04-24 16:48:26 +08:00
#if DEBUG && !DISABLE_DEBUG
2024-03-09 03:35:01 +08:00
protected override void OnSetup()
{
_markers = new EcsProfilerMarker[Process.Length];
for (int i = 0; i < Process.Length; i++)
{
2024-03-09 03:35:01 +08:00
_markers[i] = new EcsProfilerMarker($"EcsRunner.{Process[i].GetType().Name}.{nameof(LateRun)}");
}
2023-04-24 16:48:26 +08:00
}
2024-03-09 03:35:01 +08:00
#endif
}
[MetaColor(MetaColor.Orange)]
public class EcsFixedRunRunner : EcsRunner<IEcsFixedRunProcess>, IEcsFixedRunProcess
{
2023-04-24 16:48:26 +08:00
#if DEBUG && !DISABLE_DEBUG
2024-03-09 03:35:01 +08:00
private EcsProfilerMarker[] _markers;
2023-04-24 16:48:26 +08:00
#endif
2024-03-09 03:35:01 +08:00
public void FixedRun()
{
2023-04-24 16:48:26 +08:00
#if DEBUG && !DISABLE_DEBUG
2024-03-09 03:35:01 +08:00
for (int i = 0; i < Process.Length; i++)
{
using (_markers[i].Auto())
2023-04-24 16:48:26 +08:00
{
2024-03-09 03:35:01 +08:00
Process[i].FixedRun();
2023-04-24 16:48:26 +08:00
}
2024-03-09 03:35:01 +08:00
}
#else
2024-03-09 03:35:01 +08:00
foreach (var item in targets) item.FixedRun();
#endif
2024-03-09 03:35:01 +08:00
}
2023-04-07 05:09:20 +08:00
#if DEBUG && !DISABLE_DEBUG
2024-03-09 03:35:01 +08:00
protected override void OnSetup()
{
_markers = new EcsProfilerMarker[Process.Length];
for (int i = 0; i < Process.Length; i++)
{
2024-03-09 03:35:01 +08:00
_markers[i] = new EcsProfilerMarker($"EcsRunner.{Process[i].GetType().Name}.{nameof(FixedRun)}");
}
}
2024-03-09 03:35:01 +08:00
#endif
}
}