internal void Update(float time) { for (int i = 0; i < _gameObjects.Count; i++) { if (_gameObjects[i].IsActive) { _gameObjects[i].Update(time); } } FrameQueue.ConsumeActions(); for (int i = 0; i < _updatables.Count; i++) { _updatables[i].Update(time); } var toRemove = new List <GameObject>(_toRemove.Count); for (int i = 0; i < _toRemove.Count; i++) { var obj = _toRemove[i]; if (obj.HasJobs) { toRemove.Add(obj); } else { obj.RemovedFromCurrentScene(); } } _toRemove = toRemove; }