/// <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); }