Пример #1
0
        /// <summary>
        /// Adds new system to processing.
        /// </summary>
        /// <param name="system">System instance.</param>
        public EcsSystems Add(IEcsSystem system)
        {
            Internals.EcsHelpers.Assert(system != null, "system is null");
#if !LEOECS_DISABLE_INJECT
            EcsInjections.Inject(system, _world);
#endif
            var preInitSystem = system as IEcsPreInitSystem;
            if (preInitSystem != null)
            {
                if (_preInitSystemsCount == _preInitSystems.Length)
                {
                    Array.Resize(ref _preInitSystems, _preInitSystemsCount << 1);
                }
                _preInitSystems[_preInitSystemsCount++] = preInitSystem;
            }

            var initSystem = system as IEcsInitSystem;
            if (initSystem != null)
            {
                if (_initSystemsCount == _initSystems.Length)
                {
                    Array.Resize(ref _initSystems, _initSystemsCount << 1);
                }
                _initSystems[_initSystemsCount++] = initSystem;
            }

            var runSystem = system as IEcsRunSystem;
            if (runSystem != null)
            {
                if (_runSystemsCount == _runSystems.Length)
                {
                    Array.Resize(ref _runSystems, _runSystemsCount << 1);
                }
                _runSystems[_runSystemsCount++] = runSystem;
            }
            return(this);
        }