using Syntriax.Engine.Core.Abstract; using Syntriax.Engine.Core.Exceptions; namespace Syntriax.Engine.Core.Factory; public class StateEnableFactory { public IStateEnable Instantiate(IEntity entity) => Instantiate(entity); public T Instantiate(IEntity entity, params object?[]? args) where T : class, IStateEnable { T stateEnable = TypeFactory.Get(args); if (!stateEnable.Assign(entity)) throw AssignException.From(stateEnable, entity); return stateEnable; } }