public OneTypeSystems GetOneTypeSystems(Type type) { OneTypeSystems systems = null; this.typeSystemsMap.TryGetValue(type, out systems); return(systems); }
/// <summary> /// 初始化EventSystem,需要先添加Type /// </summary> public void EventSystemInit() { foreach (Type type in this.GetTypes(typeof(ObjectSystemAttribute))) { object obj = Activator.CreateInstance(type); if (obj is ISystemType iSystemType) { OneTypeSystems oneTypeSystems = this.typeSystems.GetOrCreateOneTypeSystems(iSystemType.Type()); oneTypeSystems.Add(iSystemType.SystemType(), obj); } } this.allEvents.Clear(); foreach (Type type in types[typeof(EventAttribute)]) { IEvent obj = Activator.CreateInstance(type) as IEvent; if (obj == null) { throw new Exception($"type not is AEvent: {obj.GetType().Name}"); } Type eventType = obj.GetEventType(); if (!this.allEvents.ContainsKey(eventType)) { this.allEvents.Add(eventType, new List <object>()); } this.allEvents[eventType].Add(obj); } this.Load(); }
public void RegisterSystem(Entity component, bool isRegister = true) { if (!isRegister) { this.Remove(component.InstanceId); return; } this.allEntities.Add(component.InstanceId, component); Type type = component.GetType(); OneTypeSystems oneTypeSystems = this.typeSystems.GetOneTypeSystems(type); if (oneTypeSystems == null) { return; } if (oneTypeSystems.ContainsKey(typeof(ILoadSystem))) { this.loaders.Enqueue(component.InstanceId); } if (oneTypeSystems.ContainsKey(typeof(IUpdateSystem))) { this.updates.Enqueue(component.InstanceId); } if (oneTypeSystems.ContainsKey(typeof(ILateUpdateSystem))) { this.lateUpdates.Enqueue(component.InstanceId); } }
public void Add(Dictionary <string, Type> addTypes) { this.allTypes.Clear(); foreach (var kv in addTypes) { this.allTypes[kv.Key] = kv.Value; } this.types.Clear(); List <Type> baseAttributeTypes = GetBaseAttributes(); foreach (Type baseAttributeType in baseAttributeTypes) { foreach (var kv in this.allTypes) { Type type = kv.Value; if (type.IsAbstract) { continue; } object[] objects = type.GetCustomAttributes(baseAttributeType, true); if (objects.Length == 0) { continue; } this.types.Add(baseAttributeType, type); } } this.typeSystems = new TypeSystems(); foreach (Type type in this.GetTypes(typeof(ObjectSystemAttribute))) { object obj = Activator.CreateInstance(type); if (obj is ISystemType iSystemType) { OneTypeSystems oneTypeSystems = this.typeSystems.GetOrCreateOneTypeSystems(iSystemType.Type()); oneTypeSystems.Add(iSystemType.SystemType(), obj); } } this.allEvents.Clear(); foreach (Type type in types[typeof(EventAttribute)]) { IEvent iEvent = Activator.CreateInstance(type) as IEvent; if (iEvent != null) { Type eventType = iEvent.GetEventType(); if (!this.allEvents.ContainsKey(eventType)) { this.allEvents.Add(eventType, new List <object>()); } this.allEvents[eventType].Add(iEvent); } } }
public void Add(Assembly assembly) { this.assemblies[$"{assembly.GetName().Name}.dll"] = assembly; this.types.Clear(); foreach (Assembly value in this.assemblies.Values) { foreach (Type type in value.GetTypes()) { if (type.IsAbstract) { continue; } object[] objects = type.GetCustomAttributes(typeof(BaseAttribute), true); if (objects.Length == 0) { continue; } foreach (BaseAttribute baseAttribute in objects) { this.types.Add(baseAttribute.AttributeType, type); } } } this.typeSystems = new TypeSystems(); foreach (Type type in this.GetTypes(typeof(ObjectSystemAttribute))) { object obj = Activator.CreateInstance(type); if (obj is ISystemType iSystemType) { OneTypeSystems oneTypeSystems = this.typeSystems.GetOrCreateOneTypeSystems(iSystemType.Type()); oneTypeSystems.Add(iSystemType.SystemType(), obj); } } this.allEvents.Clear(); foreach (Type type in types[typeof(EventAttribute)]) { IEvent obj = Activator.CreateInstance(type) as IEvent; if (obj == null) { throw new Exception($"type not is AEvent: {obj.GetType().Name}"); } Type eventType = obj.GetEventType(); if (!this.allEvents.ContainsKey(eventType)) { this.allEvents.Add(eventType, new List <object>()); } this.allEvents[eventType].Add(obj); } this.Load(); }
public void Awake() { foreach (Type type in EventSystem.Instance.GetTypes(typeof(UISystemAttribute))) { object obj = Activator.CreateInstance(type); if (obj is ISystemType iSystemType) { OneTypeSystems oneTypeSystems = this.typeSystems.GetOrCreateOneTypeSystems(iSystemType.Type()); oneTypeSystems.Add(iSystemType.SystemType(), obj); } } }
private SelectEventSystem() { typeSystems = new TypeSystems(); foreach (Type type in EventSystem.Instance.GetTypes(typeof(SelectSystemAttribute))) { object obj = Activator.CreateInstance(type); if (obj is ISystemType iSystemType) { OneTypeSystems oneTypeSystems = this.typeSystems.GetOrCreateOneTypeSystems(iSystemType.Type()); oneTypeSystems.Add(iSystemType.SystemType(), obj); } } }
public OneTypeSystems GetOrCreateOneTypeSystems(Type type) { OneTypeSystems systems = null; this.typeSystemsMap.TryGetValue(type, out systems); if (systems != null) { return(systems); } systems = new OneTypeSystems(); this.typeSystemsMap.Add(type, systems); return(systems); }
public List <object> GetSystems(Type type, Type systemType) { OneTypeSystems oneTypeSystems = null; if (!this.typeSystemsMap.TryGetValue(type, out oneTypeSystems)) { return(null); } if (!oneTypeSystems.TryGetValue(systemType, out List <object> systems)) { return(null); } return(systems); }
public void Add(Type[] addTypes) { this.allTypes.Clear(); foreach (Type addType in addTypes) { this.allTypes[addType.FullName] = addType; } this.types.Clear(); List <Type> baseAttributeTypes = GetBaseAttributes(addTypes); foreach (Type baseAttributeType in baseAttributeTypes) { foreach (Type type in addTypes) { if (type.IsAbstract) { continue; } object[] objects = type.GetCustomAttributes(baseAttributeType, true); if (objects.Length == 0) { continue; } this.types.Add(baseAttributeType, type); } } this.typeSystems = new TypeSystems(); foreach (Type type in this.GetTypes(typeof(ObjectSystemAttribute))) { object obj = Activator.CreateInstance(type); if (obj is ISystemType iSystemType) { OneTypeSystems oneTypeSystems = this.typeSystems.GetOrCreateOneTypeSystems(iSystemType.Type()); oneTypeSystems.Add(iSystemType.SystemType(), obj); } } this.allEvents.Clear(); foreach (Type type in types[typeof(EventAttribute)]) { IEvent obj = Activator.CreateInstance(type) as IEvent; if (obj == null) { throw new Exception($"type not is AEvent: {obj.GetType().Name}"); } Type eventType = obj.GetEventType(); if (!this.allEvents.ContainsKey(eventType)) { this.allEvents.Add(eventType, new List <object>()); } this.allEvents[eventType].Add(obj); } }