/// <summary> /// Adds new system to processing. /// </summary> /// <param name="system">System instance.</param> public EcsWorld AddSystem(IEcsSystem system) { #if DEBUG && !ECS_PERF_TEST if (_inited) { throw new Exception("Already initialized, cant add new system."); } #endif EcsInjections.Inject(this, system); var preInitSystem = system as IEcsPreInitSystem; if (preInitSystem != null) { _preInitSystems.Add(preInitSystem); } var initSystem = system as IEcsInitSystem; if (initSystem != null) { _initSystems.Add(initSystem); } var runSystem = system as IEcsRunSystem; if (runSystem != null) { switch (runSystem.GetRunSystemType()) { case EcsRunSystemType.Update: _runUpdateSystems.Add(runSystem); break; case EcsRunSystemType.FixedUpdate: _runFixedUpdateSystems.Add(runSystem); break; } } return(this); }
/// <summary> /// Adds new system to processing. /// </summary> /// <param name="system">System instance.</param> public MultiTickEcsSystems Add(IEcsSystem system) { #if DEBUG if (system == null) { throw new ArgumentNullException(); } #endif var initSystem = system as IEcsInitSystem; if (initSystem != null) { if (_initSystemsCount == _initSystems.Length) { Array.Resize(ref _initSystems, _initSystemsCount << 1); } _initSystems[_initSystemsCount++] = initSystem; } #if !LEOECS_DISABLE_INJECT EcsInjections.Inject(system, _world); #endif var runSystem = system as IEcsRunSystem; if (runSystem != null) { if (_runSystemsCount == _runSystems.Length) { Array.Resize(ref _runSystems, _runSystemsCount << 1); } _runSystems[_runSystemsCount++] = runSystem; } return(this); }