fix: IGameObjects Not Being Initialized Properly
This commit is contained in:
parent
6bc9043a86
commit
24b50eba12
|
@ -1,5 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
using Syntriax.Engine.Core.Exceptions;
|
||||||
|
|
||||||
namespace Syntriax.Engine.Core.Abstract;
|
namespace Syntriax.Engine.Core.Abstract;
|
||||||
|
|
||||||
public abstract class BaseEntity : IEntity
|
public abstract class BaseEntity : IEntity
|
||||||
|
@ -72,6 +74,8 @@ public abstract class BaseEntity : IEntity
|
||||||
|
|
||||||
UnassignInternal();
|
UnassignInternal();
|
||||||
|
|
||||||
|
_stateEnable = null!;
|
||||||
|
_stateEnable.Unassign();
|
||||||
OnUnassigned?.Invoke(this);
|
OnUnassigned?.Invoke(this);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -82,6 +86,8 @@ public abstract class BaseEntity : IEntity
|
||||||
if (IsInitialized)
|
if (IsInitialized)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
NotAssignedException.Check(this, _stateEnable);
|
||||||
|
|
||||||
InitializeInternal();
|
InitializeInternal();
|
||||||
|
|
||||||
IsInitialized = true;
|
IsInitialized = true;
|
||||||
|
|
|
@ -63,6 +63,10 @@ public class GameManager : BaseEntity, IGameManager
|
||||||
{
|
{
|
||||||
_hierarchyObjects.Add(hierarchyObject);
|
_hierarchyObjects.Add(hierarchyObject);
|
||||||
hierarchyObject.EnterHierarchy(this);
|
hierarchyObject.EnterHierarchy(this);
|
||||||
|
|
||||||
|
if (!hierarchyObject.Initialize())
|
||||||
|
throw new Exception($"{nameof(hierarchyObject)} can't be finalized");
|
||||||
|
|
||||||
OnHierarchyObjectRegistered?.Invoke(this, hierarchyObject);
|
OnHierarchyObjectRegistered?.Invoke(this, hierarchyObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -85,6 +89,10 @@ public class GameManager : BaseEntity, IGameManager
|
||||||
{
|
{
|
||||||
_hierarchyObjects.Remove(hierarchyObject);
|
_hierarchyObjects.Remove(hierarchyObject);
|
||||||
hierarchyObject.ExitHierarchy();
|
hierarchyObject.ExitHierarchy();
|
||||||
|
|
||||||
|
if (!hierarchyObject.Finalize())
|
||||||
|
throw new Exception($"{nameof(hierarchyObject)} can't be finalized");
|
||||||
|
|
||||||
OnHierarchyObjectUnRegistered?.Invoke(this, hierarchyObject);
|
OnHierarchyObjectUnRegistered?.Invoke(this, hierarchyObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -138,6 +146,9 @@ public class GameManager : BaseEntity, IGameManager
|
||||||
if (!gameObject.EnterHierarchy(this))
|
if (!gameObject.EnterHierarchy(this))
|
||||||
throw new Exception($"{nameof(gameObject)} can't enter the hierarchy");
|
throw new Exception($"{nameof(gameObject)} can't enter the hierarchy");
|
||||||
|
|
||||||
|
if (!gameObject.Initialize())
|
||||||
|
throw new Exception($"{nameof(gameObject)} can't be initialized");
|
||||||
|
|
||||||
OnHierarchyObjectRegistered?.Invoke(this, gameObject);
|
OnHierarchyObjectRegistered?.Invoke(this, gameObject);
|
||||||
OnGameObjectRegistered?.Invoke(this, gameObject);
|
OnGameObjectRegistered?.Invoke(this, gameObject);
|
||||||
}
|
}
|
||||||
|
@ -156,6 +167,9 @@ public class GameManager : BaseEntity, IGameManager
|
||||||
if (!gameObject.ExitHierarchy())
|
if (!gameObject.ExitHierarchy())
|
||||||
throw new Exception($"{nameof(gameObject)} can't exit the hierarchy");
|
throw new Exception($"{nameof(gameObject)} can't exit the hierarchy");
|
||||||
|
|
||||||
|
if (!gameObject.Finalize())
|
||||||
|
throw new Exception($"{nameof(gameObject)} can't be finalized");
|
||||||
|
|
||||||
OnHierarchyObjectUnRegistered?.Invoke(this, gameObject);
|
OnHierarchyObjectUnRegistered?.Invoke(this, gameObject);
|
||||||
OnGameObjectUnRegistered?.Invoke(this, gameObject);
|
OnGameObjectUnRegistered?.Invoke(this, gameObject);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,6 @@ public class GameObject : BaseEntity, IGameObject
|
||||||
|
|
||||||
private ITransform _transform = null!;
|
private ITransform _transform = null!;
|
||||||
private IBehaviourController _behaviourController = null!;
|
private IBehaviourController _behaviourController = null!;
|
||||||
private IStateEnable _stateEnable = null!;
|
|
||||||
private IGameManager? _gameManager = null;
|
private IGameManager? _gameManager = null;
|
||||||
|
|
||||||
private string _name = nameof(GameObject);
|
private string _name = nameof(GameObject);
|
||||||
|
@ -47,13 +46,12 @@ public class GameObject : BaseEntity, IGameObject
|
||||||
|
|
||||||
NotAssignedException.Check(this, _transform);
|
NotAssignedException.Check(this, _transform);
|
||||||
NotAssignedException.Check(this, _behaviourController);
|
NotAssignedException.Check(this, _behaviourController);
|
||||||
NotAssignedException.Check(this, _stateEnable);
|
|
||||||
NotAssignedException.Check(this, _gameManager);
|
NotAssignedException.Check(this, _gameManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update()
|
public void Update()
|
||||||
{
|
{
|
||||||
if (!_stateEnable.Enabled)
|
if (!StateEnable.Enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
OnUpdated?.Invoke(this);
|
OnUpdated?.Invoke(this);
|
||||||
|
@ -91,7 +89,6 @@ public class GameObject : BaseEntity, IGameObject
|
||||||
{
|
{
|
||||||
base.UnassignInternal();
|
base.UnassignInternal();
|
||||||
|
|
||||||
_stateEnable = null!;
|
|
||||||
_transform = null!;
|
_transform = null!;
|
||||||
_behaviourController = null!;
|
_behaviourController = null!;
|
||||||
_gameManager = null!;
|
_gameManager = null!;
|
||||||
|
@ -104,8 +101,8 @@ public class GameObject : BaseEntity, IGameObject
|
||||||
controller.BehaviourController.OnBehaviourAdded += OnBehaviourAdded;
|
controller.BehaviourController.OnBehaviourAdded += OnBehaviourAdded;
|
||||||
controller.BehaviourController.OnBehaviourRemoved += OnBehaviourRemoved;
|
controller.BehaviourController.OnBehaviourRemoved += OnBehaviourRemoved;
|
||||||
}
|
}
|
||||||
private void OnBehaviourRemoved(IBehaviourController _, IBehaviour behaviour) { if (IsInitialized) behaviour.Initialize(); }
|
private void OnBehaviourRemoved(IBehaviourController _, IBehaviour behaviour) { if (IsInitialized) behaviour.Finalize(); }
|
||||||
private void OnBehaviourAdded(IBehaviourController _, IBehaviour behaviour) { if (IsInitialized) behaviour.Finalize(); }
|
private void OnBehaviourAdded(IBehaviourController _, IBehaviour behaviour) { if (!IsInitialized) behaviour.Initialize(); }
|
||||||
|
|
||||||
bool IHierarchyObject.EnterHierarchy(IGameManager gameManager)
|
bool IHierarchyObject.EnterHierarchy(IGameManager gameManager)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue