Development Merge 2025.10.18 #4
@@ -4,10 +4,10 @@ namespace Syntriax.Engine.Core.Factory;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public class BehaviourControllerFactory
 | 
					public class BehaviourControllerFactory
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public static IBehaviourController Instantiate(IUniverseObject universeObject)
 | 
					    public static IBehaviourController Instantiate(IUniverseObject universeObject, IStateEnable? stateEnable = null)
 | 
				
			||||||
        => Instantiate<BehaviourController>(universeObject);
 | 
					        => Instantiate<BehaviourController>(universeObject, stateEnable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static T Instantiate<T>(IUniverseObject universeObject, params object?[]? args)
 | 
					    public static T Instantiate<T>(IUniverseObject universeObject, IStateEnable? stateEnable = null, params object?[]? args)
 | 
				
			||||||
        where T : class, IBehaviourController
 | 
					        where T : class, IBehaviourController
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        T behaviourController = TypeFactory.Get<T>(args);
 | 
					        T behaviourController = TypeFactory.Get<T>(args);
 | 
				
			||||||
@@ -18,6 +18,17 @@ public class BehaviourControllerFactory
 | 
				
			|||||||
        if (!behaviourController.Assign(universeObject))
 | 
					        if (!behaviourController.Assign(universeObject))
 | 
				
			||||||
            throw AssignFailedException.From(behaviourController, universeObject);
 | 
					            throw AssignFailedException.From(behaviourController, universeObject);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (stateEnable is not null)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (!stateEnable.Assign(behaviourController))
 | 
				
			||||||
 | 
					                throw AssignFailedException.From(stateEnable, behaviourController);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!behaviourController.Assign(stateEnable))
 | 
				
			||||||
 | 
					                throw AssignFailedException.From(behaviourController, stateEnable);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            StateEnableFactory.Instantiate(behaviourController);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return behaviourController;
 | 
					        return behaviourController;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,12 +12,15 @@ public class BehaviourFactory
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        T behaviour = TypeFactory.Get<T>(args);
 | 
					        T behaviour = TypeFactory.Get<T>(args);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        stateEnable ??= TypeFactory.Get<StateEnable>();
 | 
					        if (stateEnable is not null)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
            if (!stateEnable.Assign(behaviour))
 | 
					            if (!stateEnable.Assign(behaviour))
 | 
				
			||||||
                throw AssignFailedException.From(stateEnable, behaviour);
 | 
					                throw AssignFailedException.From(stateEnable, behaviour);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (!behaviour.Assign(stateEnable))
 | 
					            if (!behaviour.Assign(stateEnable))
 | 
				
			||||||
                throw AssignFailedException.From(behaviour, stateEnable);
 | 
					                throw AssignFailedException.From(behaviour, stateEnable);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            StateEnableFactory.Instantiate(behaviour);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return behaviour;
 | 
					        return behaviour;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,18 +18,25 @@ public class UniverseObjectFactory
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        T universeObject = TypeFactory.Get<T>(args);
 | 
					        T universeObject = TypeFactory.Get<T>(args);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        behaviourController ??= TypeFactory.Get<BehaviourController>();
 | 
					        if (behaviourController is not null)
 | 
				
			||||||
        stateEnable ??= TypeFactory.Get<StateEnable>();
 | 
					        {
 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (!behaviourController.Assign(universeObject))
 | 
					            if (!behaviourController.Assign(universeObject))
 | 
				
			||||||
                throw AssignFailedException.From(behaviourController, universeObject);
 | 
					                throw AssignFailedException.From(behaviourController, universeObject);
 | 
				
			||||||
        if (!stateEnable.Assign(universeObject))
 | 
					 | 
				
			||||||
            throw AssignFailedException.From(stateEnable, universeObject);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (!universeObject.Assign(behaviourController))
 | 
					            if (!universeObject.Assign(behaviourController))
 | 
				
			||||||
                throw AssignFailedException.From(universeObject, behaviourController);
 | 
					                throw AssignFailedException.From(universeObject, behaviourController);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            BehaviourControllerFactory.Instantiate(universeObject);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (stateEnable is not null)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (!stateEnable.Assign(universeObject))
 | 
				
			||||||
 | 
					                throw AssignFailedException.From(stateEnable, universeObject);
 | 
				
			||||||
            if (!universeObject.Assign(stateEnable))
 | 
					            if (!universeObject.Assign(stateEnable))
 | 
				
			||||||
                throw AssignFailedException.From(universeObject, stateEnable);
 | 
					                throw AssignFailedException.From(universeObject, stateEnable);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            StateEnableFactory.Instantiate(universeObject);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return universeObject;
 | 
					        return universeObject;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user