namespace Model { public static class ComponentFactory { public static T CreateWithParent(Component parent) where T : Component { T disposer = Game.ObjectPool.Fetch(); disposer.Parent = parent; Game.EventSystem.Awake(disposer); return disposer; } public static T CreateWithParent(Component parent, A a) where T : Component { T disposer = Game.ObjectPool.Fetch(); disposer.Parent = parent; Game.EventSystem.Awake(disposer, a); return disposer; } public static T CreateWithParent(Component parent, A a, B b) where T : Component { T disposer = Game.ObjectPool.Fetch(); disposer.Parent = parent; Game.EventSystem.Awake(disposer, a, b); return disposer; } public static T CreateWithParent(Component parent, A a, B b, C c) where T : Component { T disposer = Game.ObjectPool.Fetch(); disposer.Parent = parent; Game.EventSystem.Awake(disposer, a, b, c); return disposer; } public static T Create() where T : Component { T disposer = Game.ObjectPool.Fetch(); Game.EventSystem.Awake(disposer); return disposer; } public static T Create(A a) where T : Component { T disposer = Game.ObjectPool.Fetch(); Game.EventSystem.Awake(disposer, a); return disposer; } public static T Create(A a, B b) where T : Component { T disposer = Game.ObjectPool.Fetch(); Game.EventSystem.Awake(disposer, a, b); return disposer; } public static T Create(A a, B b, C c) where T : Component { T disposer = Game.ObjectPool.Fetch(); Game.EventSystem.Awake(disposer, a, b, c); return disposer; } public static T CreateWithId(long id) where T : Component { T disposer = Game.ObjectPool.Fetch(); disposer.Id = id; Game.EventSystem.Awake(disposer); return disposer; } public static T CreateWithId(long id, A a) where T : Component { T disposer = Game.ObjectPool.Fetch(); disposer.Id = id; Game.EventSystem.Awake(disposer, a); return disposer; } public static T CreateWithId(long id, A a, B b) where T : Component { T disposer = Game.ObjectPool.Fetch(); disposer.Id = id; Game.EventSystem.Awake(disposer, a, b); return disposer; } public static T CreateWithId(long id, A a, B b, C c) where T : Component { T disposer = Game.ObjectPool.Fetch(); disposer.Id = id; Game.EventSystem.Awake(disposer, a, b, c); return disposer; } } }