diff --git a/Engine.Core/Abstract/IBehaviourController.cs b/Engine.Core/Abstract/IBehaviourController.cs index c5ead04..2736820 100644 --- a/Engine.Core/Abstract/IBehaviourController.cs +++ b/Engine.Core/Abstract/IBehaviourController.cs @@ -5,7 +5,7 @@ namespace Syntriax.Engine.Core; /// /// Represents a controller for managing s and notify them accordingly about the engine's updates. Connected to an . /// -public interface IBehaviourController : IInitializable, IHasUniverseObject, IEnumerable +public interface IBehaviourController : IEntity, IHasUniverseObject, IEnumerable { /// /// Event triggered before the update of s. diff --git a/Engine.Core/BehaviourController.cs b/Engine.Core/BehaviourController.cs index 08328c4..2600f74 100644 --- a/Engine.Core/BehaviourController.cs +++ b/Engine.Core/BehaviourController.cs @@ -6,7 +6,7 @@ using System.Linq; namespace Syntriax.Engine.Core; [System.Diagnostics.DebuggerDisplay("Behaviour Count: {behaviours.Count}")] -public class BehaviourController : IBehaviourController +public class BehaviourController : BaseEntity, IBehaviourController { public event IBehaviourController.PreUpdateEventHandler? OnPreUpdate = null; public event IBehaviourController.UpdateEventHandler? OnUpdate = null; @@ -16,34 +16,12 @@ public class BehaviourController : IBehaviourController public event IBehaviourController.BehaviourRemovedEventHandler? OnBehaviourRemoved = null; public event IHasUniverseObject.UniverseObjectAssignedEventHandler? OnUniverseObjectAssigned = null; - public event IInitializable.InitializedEventHandler? OnInitialized = null; - public event IInitializable.FinalizedEventHandler? OnFinalized = null; - - public event IAssignable.UnassignEventHandler? OnUnassigned = null; - private readonly IList behaviours = new List(Constants.BEHAVIOURS_SIZE_INITIAL); private IUniverseObject _universeObject = null!; - private bool _initialized = false; public IUniverseObject UniverseObject => _universeObject; - public bool IsInitialized - { - get => _initialized; - private set - { - if (value == _initialized) - return; - - _initialized = value; - if (value) - OnInitialized?.InvokeSafe(this); - else - OnFinalized?.InvokeSafe(this); - } - } - public T AddBehaviour(T behaviour) where T : class, IBehaviour { InsertBehaviourByPriority(behaviour); @@ -133,40 +111,18 @@ public class BehaviourController : IBehaviourController return true; } - public bool Initialize() + protected override void InitializeInternal() { - if (IsInitialized) - return false; - Debug.AssertHelpers.AssertUniverseObjectAssigned(this); foreach (IBehaviour behaviour in behaviours) behaviour.Initialize(); - - IsInitialized = true; - return true; } - public bool Finalize() + protected override void FinalizeInternal() { - if (!IsInitialized) - return false; - foreach (IBehaviour behaviour in behaviours) behaviour.Finalize(); - - IsInitialized = false; - return true; - } - - public bool Unassign() - { - if (IsInitialized) - return false; - - _universeObject = null!; - OnUnassigned?.InvokeSafe(this); - return true; } public void Update()