Files
Project-M/Packages/com.rukhanka.animation/Rukhanka.DebugDrawer/DebugDrawerSystems.cs
T
2026-05-31 14:27:52 -07:00

59 lines
1.8 KiB
C#

using Unity.Collections;
using Unity.Entities;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
namespace Rukhanka.DebugDrawer
{
[UpdateInGroup(typeof(SimulationSystemGroup), OrderFirst = true)]
[WorldSystemFilter(WorldSystemFilterFlags.LocalSimulation | WorldSystemFilterFlags.ClientSimulation)]
public partial class RukhankaDebugDrawerFrameStartSystem : SystemBase
{
private DrawerManagedSingleton ds;
protected override void OnCreate()
{
ds = new DrawerManagedSingleton();
if (ds.IsValid())
{
var e = EntityManager.CreateSingleton(ds, new FixedString64Bytes("Rukhanka.DebugDrawer.Singleton"));
var dw = Drawer.Create(ds);
EntityManager.AddComponentData(e, dw);
}
}
protected override void OnUpdate()
{
if (!SystemAPI.ManagedAPI.TryGetSingleton<DrawerManagedSingleton>(out var ds))
return;
ds.BeginFrame();
var dw = Drawer.Create(ds);
SystemAPI.SetSingleton(dw);
}
protected override void OnDestroy()
{
if (SystemAPI.ManagedAPI.TryGetSingleton<DrawerManagedSingleton>(out var ds))
ds.Dispose();
}
}
///===============================================================================================================///
[UpdateInGroup(typeof(PresentationSystemGroup), OrderLast = true)]
[WorldSystemFilter(WorldSystemFilterFlags.LocalSimulation | WorldSystemFilterFlags.ClientSimulation)]
public partial class RukhankaDebugDrawerFrameEndSystem : SystemBase
{
protected override void OnUpdate()
{
Dependency.Complete();
if (SystemAPI.ManagedAPI.TryGetSingleton<DrawerManagedSingleton>(out var ds))
{
ds.EndFrame();
SystemAPI.SetSingleton(new Drawer());
}
}
}
}