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