refactor: removed unnecessary overrides from Behaviour class
This commit is contained in:
parent
f31b84f519
commit
ac620264b1
@ -1,8 +1,6 @@
|
|||||||
namespace Syntriax.Engine.Core;
|
namespace Syntriax.Engine.Core;
|
||||||
|
|
||||||
public abstract class Behaviour : BehaviourBase, IFirstFrameUpdate,
|
public abstract class Behaviour : BehaviourBase
|
||||||
IPreUpdate, IUpdate, IPostUpdate,
|
|
||||||
IPreDraw, IDraw, IPostDraw
|
|
||||||
{
|
{
|
||||||
private readonly Event<IUniverseObject, IUniverseObject.EnteredUniverseArguments>.EventHandler delegateEnteredUniverse = null!;
|
private readonly Event<IUniverseObject, IUniverseObject.EnteredUniverseArguments>.EventHandler delegateEnteredUniverse = null!;
|
||||||
private readonly Event<IUniverseObject, IUniverseObject.ExitedUniverseArguments>.EventHandler delegateExitedUniverse = null!;
|
private readonly Event<IUniverseObject, IUniverseObject.ExitedUniverseArguments>.EventHandler delegateExitedUniverse = null!;
|
||||||
@ -18,10 +16,10 @@ public abstract class Behaviour : BehaviourBase, IFirstFrameUpdate,
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnUnassign() { }
|
protected virtual void OnUnassign() { }
|
||||||
protected virtual void OnUnassign(IAssignable assignable) => OnUnassign();
|
protected void OnUnassign(IAssignable assignable) => OnUnassign();
|
||||||
|
|
||||||
protected virtual void OnInitialize() { }
|
protected virtual void OnInitialize() { }
|
||||||
protected virtual void OnInitialize(IInitializable _)
|
protected void OnInitialize(IInitializable _)
|
||||||
{
|
{
|
||||||
BehaviourController.UniverseObject.OnEnteredUniverse.AddListener(delegateEnteredUniverse);
|
BehaviourController.UniverseObject.OnEnteredUniverse.AddListener(delegateEnteredUniverse);
|
||||||
BehaviourController.UniverseObject.OnExitedUniverse.AddListener(delegateExitedUniverse);
|
BehaviourController.UniverseObject.OnExitedUniverse.AddListener(delegateExitedUniverse);
|
||||||
@ -33,7 +31,7 @@ public abstract class Behaviour : BehaviourBase, IFirstFrameUpdate,
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnFinalize() { }
|
protected virtual void OnFinalize() { }
|
||||||
protected virtual void OnFinalize(IInitializable _)
|
protected void OnFinalize(IInitializable _)
|
||||||
{
|
{
|
||||||
BehaviourController.UniverseObject.OnEnteredUniverse.RemoveListener(delegateEnteredUniverse);
|
BehaviourController.UniverseObject.OnEnteredUniverse.RemoveListener(delegateEnteredUniverse);
|
||||||
BehaviourController.UniverseObject.OnExitedUniverse.RemoveListener(delegateExitedUniverse);
|
BehaviourController.UniverseObject.OnExitedUniverse.RemoveListener(delegateExitedUniverse);
|
||||||
@ -44,100 +42,9 @@ public abstract class Behaviour : BehaviourBase, IFirstFrameUpdate,
|
|||||||
ExitedUniverse(UniverseObject, new(Universe));
|
ExitedUniverse(UniverseObject, new(Universe));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnFirstActiveFrame() { }
|
|
||||||
void IFirstFrameUpdate.FirstActiveFrame()
|
|
||||||
{
|
|
||||||
Debug.Assert.AssertInitialized(this);
|
|
||||||
OnFirstActiveFrame();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void OnPreUpdatePreActiveCheck() { }
|
|
||||||
protected virtual void OnPreUpdate() { }
|
|
||||||
void IPreUpdate.PreUpdate()
|
|
||||||
{
|
|
||||||
Debug.Assert.AssertInitialized(this);
|
|
||||||
|
|
||||||
OnPreUpdatePreActiveCheck();
|
|
||||||
|
|
||||||
if (!IsActive)
|
|
||||||
return;
|
|
||||||
|
|
||||||
OnPreUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void OnUpdatePreActiveCheck() { }
|
|
||||||
protected virtual void OnUpdate() { }
|
|
||||||
void IUpdate.Update()
|
|
||||||
{
|
|
||||||
Debug.Assert.AssertInitialized(this);
|
|
||||||
|
|
||||||
OnUpdatePreActiveCheck();
|
|
||||||
|
|
||||||
if (!IsActive)
|
|
||||||
return;
|
|
||||||
|
|
||||||
OnUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void OnPostUpdatePreActiveCheck() { }
|
|
||||||
protected virtual void OnPostUpdate() { }
|
|
||||||
void IPostUpdate.PostUpdate()
|
|
||||||
{
|
|
||||||
Debug.Assert.AssertInitialized(this);
|
|
||||||
|
|
||||||
OnPostUpdatePreActiveCheck();
|
|
||||||
|
|
||||||
if (!StateEnable.Enabled)
|
|
||||||
return;
|
|
||||||
|
|
||||||
OnPostUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void OnPreDrawPreActiveCheck() { }
|
|
||||||
protected virtual void OnPreDraw() { }
|
|
||||||
void IPreDraw.PreDraw()
|
|
||||||
{
|
|
||||||
Debug.Assert.AssertInitialized(this);
|
|
||||||
|
|
||||||
OnPreDrawPreActiveCheck();
|
|
||||||
|
|
||||||
if (!StateEnable.Enabled)
|
|
||||||
return;
|
|
||||||
|
|
||||||
OnPreDraw();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void OnDrawPreActiveCheck() { }
|
|
||||||
protected virtual void OnDraw() { }
|
|
||||||
void IDraw.Draw()
|
|
||||||
{
|
|
||||||
Debug.Assert.AssertInitialized(this);
|
|
||||||
|
|
||||||
OnDrawPreActiveCheck();
|
|
||||||
|
|
||||||
if (!StateEnable.Enabled)
|
|
||||||
return;
|
|
||||||
|
|
||||||
OnDraw();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void OnPostDrawPreActiveCheck() { }
|
|
||||||
protected virtual void OnPostDraw() { }
|
|
||||||
void IPostDraw.PostDraw()
|
|
||||||
{
|
|
||||||
Debug.Assert.AssertInitialized(this);
|
|
||||||
|
|
||||||
OnPostDrawPreActiveCheck();
|
|
||||||
|
|
||||||
if (!StateEnable.Enabled)
|
|
||||||
return;
|
|
||||||
|
|
||||||
OnPostDraw();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void OnEnteredUniverse(IUniverse universe) { }
|
protected virtual void OnEnteredUniverse(IUniverse universe) { }
|
||||||
protected virtual void EnteredUniverse(IUniverseObject sender, IUniverseObject.EnteredUniverseArguments args) => OnEnteredUniverse(args.Universe);
|
protected void EnteredUniverse(IUniverseObject sender, IUniverseObject.EnteredUniverseArguments args) => OnEnteredUniverse(args.Universe);
|
||||||
|
|
||||||
protected virtual void OnExitedUniverse(IUniverse universe) { }
|
protected virtual void OnExitedUniverse(IUniverse universe) { }
|
||||||
protected virtual void ExitedUniverse(IUniverseObject sender, IUniverseObject.ExitedUniverseArguments args) => OnExitedUniverse(args.Universe);
|
protected void ExitedUniverse(IUniverseObject sender, IUniverseObject.ExitedUniverseArguments args) => OnExitedUniverse(args.Universe);
|
||||||
}
|
}
|
||||||
|
@ -4,19 +4,6 @@ public abstract class Behaviour2D : Behaviour, IBehaviour2D
|
|||||||
{
|
{
|
||||||
public ITransform2D Transform { get; private set; } = null!;
|
public ITransform2D Transform { get; private set; } = null!;
|
||||||
|
|
||||||
protected sealed override void OnInitialize(IInitializable _)
|
protected override void OnInitialize() => Transform = BehaviourController.GetRequiredBehaviour<ITransform2D>();
|
||||||
{
|
protected override void OnFinalize() => Transform = null!;
|
||||||
Transform = BehaviourController.GetRequiredBehaviour<ITransform2D>();
|
|
||||||
base.OnInitialize(_);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected sealed override void OnFinalize(IInitializable _)
|
|
||||||
{
|
|
||||||
Transform = null!;
|
|
||||||
base.OnFinalize(_);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected sealed override void OnUnassign(IAssignable assignable) => base.OnUnassign(assignable);
|
|
||||||
protected sealed override void EnteredUniverse(IUniverseObject sender, IUniverseObject.EnteredUniverseArguments args) => base.EnteredUniverse(sender, args);
|
|
||||||
protected sealed override void ExitedUniverse(IUniverseObject sender, IUniverseObject.ExitedUniverseArguments args) => base.ExitedUniverse(sender, args);
|
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,8 @@ public abstract class Collider2DBehaviourBase : Behaviour2D, ICollider2D
|
|||||||
|
|
||||||
protected override void OnInitialize()
|
protected override void OnInitialize()
|
||||||
{
|
{
|
||||||
|
base.OnInitialize();
|
||||||
|
|
||||||
BehaviourController.TryGetBehaviourInParent(out _rigidBody2D);
|
BehaviourController.TryGetBehaviourInParent(out _rigidBody2D);
|
||||||
|
|
||||||
BehaviourController.OnBehaviourAdded.AddListener(delegateOnBehaviourAddedToController);
|
BehaviourController.OnBehaviourAdded.AddListener(delegateOnBehaviourAddedToController);
|
||||||
@ -78,6 +80,8 @@ public abstract class Collider2DBehaviourBase : Behaviour2D, ICollider2D
|
|||||||
|
|
||||||
protected override void OnFinalize()
|
protected override void OnFinalize()
|
||||||
{
|
{
|
||||||
|
base.OnFinalize();
|
||||||
|
|
||||||
BehaviourController.OnBehaviourAdded.RemoveListener(delegateOnBehaviourAddedToController);
|
BehaviourController.OnBehaviourAdded.RemoveListener(delegateOnBehaviourAddedToController);
|
||||||
BehaviourController.OnBehaviourRemoved.RemoveListener(delegateOnBehaviourRemovedFromController);
|
BehaviourController.OnBehaviourRemoved.RemoveListener(delegateOnBehaviourRemovedFromController);
|
||||||
Transform.OnScaleChanged.RemoveListener(delegateSetNeedsRecalculationFromScale);
|
Transform.OnScaleChanged.RemoveListener(delegateSetNeedsRecalculationFromScale);
|
||||||
|
@ -3,7 +3,7 @@ using Syntriax.Engine.Core.Serialization;
|
|||||||
|
|
||||||
namespace Syntriax.Engine.Systems.StateMachine;
|
namespace Syntriax.Engine.Systems.StateMachine;
|
||||||
|
|
||||||
public class StateMachine : Behaviour
|
public class StateMachine : Behaviour, IUpdate
|
||||||
{
|
{
|
||||||
public Event<StateMachine, StateChangedArguments> OnStateChanged { get; } = new();
|
public Event<StateMachine, StateChangedArguments> OnStateChanged { get; } = new();
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ public class StateMachine : Behaviour
|
|||||||
State = nextState;
|
State = nextState;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnUpdate()
|
public void Update()
|
||||||
{
|
{
|
||||||
if (State is null)
|
if (State is null)
|
||||||
return;
|
return;
|
||||||
|
@ -2,7 +2,7 @@ using Syntriax.Engine.Core;
|
|||||||
|
|
||||||
namespace Syntriax.Engine.Systems.Time;
|
namespace Syntriax.Engine.Systems.Time;
|
||||||
|
|
||||||
public class StopwatchBehaviour : Behaviour, IStopwatch
|
public class StopwatchBehaviour : Behaviour, IUpdate, IStopwatch
|
||||||
{
|
{
|
||||||
public Event<IReadOnlyStopwatch> OnStarted { get; } = new();
|
public Event<IReadOnlyStopwatch> OnStarted { get; } = new();
|
||||||
public Event<IReadOnlyStopwatch, IReadOnlyStopwatch.StopwatchDeltaArguments> OnDelta { get; } = new();
|
public Event<IReadOnlyStopwatch, IReadOnlyStopwatch.StopwatchDeltaArguments> OnDelta { get; } = new();
|
||||||
@ -38,7 +38,7 @@ public class StopwatchBehaviour : Behaviour, IStopwatch
|
|||||||
OnStopped?.Invoke(this);
|
OnStopped?.Invoke(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnUpdate()
|
public virtual void Update()
|
||||||
{
|
{
|
||||||
if (State is not TimerState.Ticking)
|
if (State is not TimerState.Ticking)
|
||||||
return;
|
return;
|
||||||
|
@ -18,9 +18,9 @@ public class TickerBehaviour : StopwatchBehaviour, ITicker
|
|||||||
nextTick = Time + Period;
|
nextTick = Time + Period;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnUpdate()
|
public override void Update()
|
||||||
{
|
{
|
||||||
base.OnUpdate();
|
base.Update();
|
||||||
|
|
||||||
while (Time > nextTick)
|
while (Time > nextTick)
|
||||||
{
|
{
|
||||||
|
@ -2,7 +2,7 @@ using Syntriax.Engine.Core;
|
|||||||
|
|
||||||
namespace Syntriax.Engine.Systems.Time;
|
namespace Syntriax.Engine.Systems.Time;
|
||||||
|
|
||||||
public class TimerBehaviour : Behaviour, ITimer
|
public class TimerBehaviour : Behaviour, IUpdate, ITimer
|
||||||
{
|
{
|
||||||
public Event<IReadOnlyTimer> OnStarted { get; } = new();
|
public Event<IReadOnlyTimer> OnStarted { get; } = new();
|
||||||
public Event<IReadOnlyTimer, IReadOnlyTimer.TimerDeltaArguments> OnDelta { get; } = new();
|
public Event<IReadOnlyTimer, IReadOnlyTimer.TimerDeltaArguments> OnDelta { get; } = new();
|
||||||
@ -53,7 +53,7 @@ public class TimerBehaviour : Behaviour, ITimer
|
|||||||
OnStopped?.Invoke(this);
|
OnStopped?.Invoke(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnUpdate()
|
public void Update()
|
||||||
{
|
{
|
||||||
if (State is not TimerState.Ticking)
|
if (State is not TimerState.Ticking)
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user