//-------------------------------------------------------------- void ofxSceneManager::gotoScene(unsigned int index, bool now) { if(_scenes.empty() || index >= _scenes.size() || _sceneChangeTimer.getDiff() < _minChangeTimeMS) return; ofxScene* s; if(_currentScene == (int) index) { ofLogWarning("ofxSceneManager") << "ignoring duplicate goto scene change"; return; } if(!now) { // tell current scene to exit if(_currentScene > SCENE_NONE) { s = _currentScenePtr; s->startExiting(); } // tell new scene to enter s = getSceneAt(index); s->startEntering(); //--------------------- <CAMBIOS MASOTROS> ---------------------// _newRunnerScenePtr = _getRunnerSceneAt(index); //--------------------- </CAMBIOS MASOTROS> ---------------------// } _newScene = index; _bChangeNow = now; ofLogVerbose("ofxSceneManager") << "GOTO SCENE: " << _newScene; }
//-------------------------------------------------------------- void ofxSceneManager::changeToNewScene() { _currentScene = _newScene; _currentRunnerScenePtr = _getRunnerSceneAt(_currentScene); if(_currentRunnerScenePtr) { _currentScenePtr = _currentRunnerScenePtr->scene; ofLogVerbose("ofxSceneManager") << "changed to " << _currentScene << " \"" << _currentScenePtr->getName() << "\""; } else { _currentScenePtr = NULL; ofLogVerbose("ofxSceneManager") << "changed to NO_SCENE"; } _newScene = SCENE_NOCHANGE; // done _bSignalledAutoChange = false; _sceneChangeTimer.set(); }
ofxScene* ofxSceneManager::getSceneAt(unsigned int index) { ofxScene::RunnerScene* rs = _getRunnerSceneAt(index); return rs == NULL ? NULL : rs->scene; }