diff --git a/Engine.Core/BehaviourController.cs b/Engine.Core/BehaviourController.cs index 0560833..3e70684 100644 --- a/Engine.Core/BehaviourController.cs +++ b/Engine.Core/BehaviourController.cs @@ -36,7 +36,10 @@ public class BehaviourController : BaseEntity, IBehaviourController } public T AddBehaviour(params object?[]? args) where T : class, IBehaviour - => AddBehaviour(Factory.BehaviourFactory.Instantiate(_universeObject, args)); + { + T behaviour = Factory.BehaviourFactory.Instantiate(args); + return AddBehaviour(behaviour); + } public T? GetBehaviour() { diff --git a/Engine.Core/Factory/BehaviourFactory.cs b/Engine.Core/Factory/BehaviourFactory.cs index e854b9c..f9efb66 100644 --- a/Engine.Core/Factory/BehaviourFactory.cs +++ b/Engine.Core/Factory/BehaviourFactory.cs @@ -4,10 +4,10 @@ namespace Syntriax.Engine.Core.Factory; public class BehaviourFactory { - public static T Instantiate(IUniverseObject universeObject, params object?[]? args) where T : class, IBehaviour - => Instantiate(universeObject, stateEnable: null, args); + public static T Instantiate(params object?[]? args) where T : class, IBehaviour + => Instantiate(stateEnable: null, args); - public static T Instantiate(IUniverseObject universeObject, IStateEnable? stateEnable, params object?[]? args) + public static T Instantiate(IStateEnable? stateEnable, params object?[]? args) where T : class, IBehaviour { T behaviour = TypeFactory.Get(args); @@ -18,8 +18,6 @@ public class BehaviourFactory if (!behaviour.Assign(stateEnable)) throw AssignFailedException.From(behaviour, stateEnable); - if (!behaviour.Assign(universeObject.BehaviourController)) - throw AssignFailedException.From(behaviour, universeObject.BehaviourController); return behaviour; }