using System; namespace ET { public interface IAwake { } public interface IAwake { } public interface IAwake { } public interface IAwake { } public interface IAwake { } public interface IAwakeSystem: ISystemType { void Run(Entity o); } public interface IAwakeSystem: ISystemType { void Run(Entity o, A a); } public interface IAwakeSystem: ISystemType { void Run(Entity o, A a, B b); } public interface IAwakeSystem: ISystemType { void Run(Entity o, A a, B b, C c); } public interface IAwakeSystem: ISystemType { void Run(Entity o, A a, B b, C c, D d); } [ObjectSystem] public abstract class AwakeSystem : IAwakeSystem where T: Entity, IAwake { Type ISystemType.Type() { return typeof(T); } Type ISystemType.SystemType() { return typeof(IAwakeSystem); } InstanceQueueIndex ISystemType.GetInstanceQueueIndex() { return InstanceQueueIndex.None; } void IAwakeSystem.Run(Entity o) { this.Awake((T)o); } protected abstract void Awake(T self); } [ObjectSystem] public abstract class AwakeSystem : IAwakeSystem where T: Entity, IAwake { Type ISystemType.Type() { return typeof(T); } Type ISystemType.SystemType() { return typeof(IAwakeSystem); } InstanceQueueIndex ISystemType.GetInstanceQueueIndex() { return InstanceQueueIndex.None; } void IAwakeSystem.Run(Entity o, A a) { this.Awake((T)o, a); } protected abstract void Awake(T self, A a); } [ObjectSystem] public abstract class AwakeSystem : IAwakeSystem where T: Entity, IAwake { Type ISystemType.Type() { return typeof(T); } Type ISystemType.SystemType() { return typeof(IAwakeSystem); } InstanceQueueIndex ISystemType.GetInstanceQueueIndex() { return InstanceQueueIndex.None; } void IAwakeSystem.Run(Entity o, A a, B b) { this.Awake((T)o, a, b); } protected abstract void Awake(T self, A a, B b); } [ObjectSystem] public abstract class AwakeSystem : IAwakeSystem where T: Entity, IAwake { Type ISystemType.Type() { return typeof(T); } Type ISystemType.SystemType() { return typeof(IAwakeSystem); } InstanceQueueIndex ISystemType.GetInstanceQueueIndex() { return InstanceQueueIndex.None; } void IAwakeSystem.Run(Entity o, A a, B b, C c) { this.Awake((T)o, a, b, c); } protected abstract void Awake(T self, A a, B b, C c); } [ObjectSystem] public abstract class AwakeSystem : IAwakeSystem where T: Entity, IAwake { Type ISystemType.Type() { return typeof(T); } Type ISystemType.SystemType() { return typeof(IAwakeSystem); } InstanceQueueIndex ISystemType.GetInstanceQueueIndex() { return InstanceQueueIndex.None; } void IAwakeSystem.Run(Entity o, A a, B b, C c, D d) { this.Awake((T)o, a, b, c, d); } protected abstract void Awake(T self, A a, B b, C c, D d); } }