Пример #1
0
        private void RemoveSystem(IEntitySystem system)
        {
            var type = system.GetType();

            if (Systems.ContainsKey(type))
            {
                Systems[type].Shutdown();
                Systems.Remove(type);
            }
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        private void AddSystem(IEntitySystem system)
        {
            var type = system.GetType();

            if (Systems.ContainsKey(type))
            {
                RemoveSystem(system);
            }

            Systems.Add(type, system);
        }
Пример #4
0
        private void RemoveSystem(IEntitySystem system)
        {
            var type = system.GetType();

            if (_systems.ContainsKey(type))
            {
                _systems[type].Shutdown();
                _entityManager.EventBus.UnsubscribeEvents(_systems[type]);
                _systems.Remove(type);
            }
        }
Пример #5
0
 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));
                }
            }
        }