private void RemoveSystem(IEntitySystem system) { var type = system.GetType(); if (Systems.ContainsKey(type)) { Systems[type].Shutdown(); Systems.Remove(type); } }
/// <summary> /// Registers systems, system can implement one of each of these /// </summary> /// <param name="system"></param> /// <returns></returns> static IEntitySystem Register(IEntitySystem system) { if (typeof(IInitializeSystem).IsAssignableFrom(system.GetType())) { var sys = system as IInitializeSystem; sys.Initialize(); initSystems.Add(sys); } if (typeof(IExecuteSystem).IsAssignableFrom(system.GetType())) { executeSystems.Add(system as IExecuteSystem); } if (typeof(IMatcherSystem).IsAssignableFrom(system.GetType())) { RegisterMatcherSystem(system as IMatcherSystem); } return(system); }
private void AddSystem(IEntitySystem system) { var type = system.GetType(); if (Systems.ContainsKey(type)) { RemoveSystem(system); } Systems.Add(type, system); }
private void RemoveSystem(IEntitySystem system) { var type = system.GetType(); if (_systems.ContainsKey(type)) { _systems[type].Shutdown(); _entityManager.EventBus.UnsubscribeEvents(_systems[type]); _systems.Remove(type); } }
public bool ContainSystem(IEntitySystem sys) { foreach (IEntitySystem item in Systems) { if (item == sys) { return(true); } if (item.GetType() == sys.GetType()) { return(true); } } return(false); }
/// Sets the attributes values on a system. public static void SetAttributeValues(IEntitySystem system) { var _systemFields = system.GetType().GetFields( System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public); foreach (var _systemField in _systemFields) { if (System.Attribute.GetCustomAttribute(_systemField, typeof(InjectedSystem)) != null) { _systemField.SetValue(system, Controller.Instance.GetSystem(_systemField.FieldType)); } } }