2D-Platformer/Assets/Scripts/Systems/InjectableComponentSystem.cs
2022-02-12 12:53:50 +02:00

33 lines
No EOL
600 B
C#

using System;
using System.Collections.Concurrent;
using Unity.Entities;
using Zenject;
namespace DefaultNamespace
{
public abstract class InjectableComponentSystem : ComponentSystem
{
private bool injected;
protected ConcurrentQueue<Action> PostUpdateActions = new ConcurrentQueue<Action>();
[Inject]
private void OnInject()
{
injected = true;
}
protected override void OnUpdate()
{
if (injected)
{
OnSystemUpdate();
}
while (PostUpdateActions.TryDequeue(out var action))
{
action.Invoke();
}
}
protected abstract void OnSystemUpdate();
}
}