fix: first frame updates not calling first, they are now set to be a high priority
This commit is contained in:
parent
a4b83679b1
commit
cf68f6ca6f
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Engine.Core;
|
namespace Engine.Core;
|
||||||
@ -23,6 +24,7 @@ public class UpdateManager : Behaviour
|
|||||||
updateEntities.Assign(universe);
|
updateEntities.Assign(universe);
|
||||||
postUpdateEntities.Assign(universe);
|
postUpdateEntities.Assign(universe);
|
||||||
|
|
||||||
|
universe.OnPreUpdate.AddListener(OnFirstUpdate, int.MaxValue);
|
||||||
universe.OnPreUpdate.AddListener(OnPreUpdate);
|
universe.OnPreUpdate.AddListener(OnPreUpdate);
|
||||||
universe.OnUpdate.AddListener(OnUpdate);
|
universe.OnUpdate.AddListener(OnUpdate);
|
||||||
universe.OnPostUpdate.AddListener(OnPostUpdate);
|
universe.OnPostUpdate.AddListener(OnPostUpdate);
|
||||||
@ -36,19 +38,23 @@ public class UpdateManager : Behaviour
|
|||||||
updateEntities.Unassign();
|
updateEntities.Unassign();
|
||||||
postUpdateEntities.Unassign();
|
postUpdateEntities.Unassign();
|
||||||
|
|
||||||
|
universe.OnPreUpdate.RemoveListener(OnFirstUpdate);
|
||||||
universe.OnPreUpdate.RemoveListener(OnPreUpdate);
|
universe.OnPreUpdate.RemoveListener(OnPreUpdate);
|
||||||
universe.OnUpdate.RemoveListener(OnUpdate);
|
universe.OnUpdate.RemoveListener(OnUpdate);
|
||||||
universe.OnPostUpdate.RemoveListener(OnPostUpdate);
|
universe.OnPostUpdate.RemoveListener(OnPostUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPreUpdate(IUniverse sender, IUniverse.UpdateArguments args)
|
private void OnFirstUpdate(IUniverse sender, IUniverse.UpdateArguments args)
|
||||||
{
|
{
|
||||||
for (int i = toCallFirstFrameUpdates.Count - 1; i >= 0; i--)
|
for (int i = toCallFirstFrameUpdates.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
toCallFirstFrameUpdates[i].FirstActiveFrame();
|
toCallFirstFrameUpdates[i].FirstActiveFrame();
|
||||||
toCallFirstFrameUpdates.RemoveAt(i);
|
toCallFirstFrameUpdates.RemoveAt(i);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnPreUpdate(IUniverse sender, IUniverse.UpdateArguments args)
|
||||||
|
{
|
||||||
for (int i = preUpdateEntities.Count - 1; i >= 0; i--)
|
for (int i = preUpdateEntities.Count - 1; i >= 0; i--)
|
||||||
preUpdateEntities[i].PreUpdate();
|
preUpdateEntities[i].PreUpdate();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user