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()