void SE_Application::update(SE_TimeMS realDelta, SE_TimeMS simulateDelta) { processCommand(realDelta, simulateDelta); mAnimationManager->update(realDelta, simulateDelta); if(mState == RUNNING) { //mRenderManager->beginDraw(); mSceneManager->render(*mRenderManager); mRenderManager->sort(); mRenderManager->draw(); mRenderManager->endDraw(); } doDelayDestroy(); }
void SE_Application::update(SE_TimeMS realDelta, SE_TimeMS simulateDelta) { if(mState == SUSPEND) { mState = EXIT; return; } processCommand(realDelta, simulateDelta); if(mState == RUNNING) { mAnimationManager->update(realDelta, simulateDelta); mParticleSystemManager->update(realDelta, simulateDelta); #ifdef EDITOR for(int i=0;i<4;++i) { PVRShellInitAPI& shellAPI = MyShellInit::getInstance()->mShellAPI[i]; eglMakeCurrent(shellAPI.m_EGLDisplay, shellAPI.m_EGLWindow, shellAPI.m_EGLWindow, MyShellInit::getInstance()->mShellAPI[0].m_EGLContext); mRenderManager->beginDraw(); mSceneManager->getMainScene()->setCamera((SE_Camera*)mEditorManager->getViewportCamera(i)); mSceneManager->renderScene(*mRenderManager); //mRenderManager->setCurrentCamera((SE_Camera*)mEditorManager->getViewportCamera(i)); mRenderManager->sort(); mRenderManager->draw(); mRenderManager->endDraw(); } #else mRenderManager->beginDraw(); mSceneManager->renderScene(*mRenderManager); mRenderManager->sort(); mRenderManager->draw(); mRenderManager->endDraw(); #endif } if(mConfig) { int printRenderInfo = mConfig->getInt("OutputRenderInfo", 0); if(printRenderInfo) { if(SE_Application::getInstance()->SEHomeDebug) { if(SE_Application::getInstance()->SEHomeDebug) LOGI("### total surface num = %d, total vertex num = %d , total face num = %d ##\n", SE_Application::getInstance()->getStatistics().renderSurfaceNum, SE_Application::getInstance()->getStatistics().renderVertexNum, SE_Application::getInstance()->getStatistics().renderFaceNum ); } std::list<SE_Application::RenderUnitStatistics*>::iterator ruStatIt; SE_Application::Statistics& stat = SE_Application::getInstance()->getStatistics(); for(ruStatIt = stat.renderUnitData.begin() ; ruStatIt != stat.renderUnitData.end(); ruStatIt++) { SE_Application::RenderUnitStatistics* rus = *ruStatIt; if(SE_Application::getInstance()->SEHomeDebug) LOGI("## surface name = %s, vertex num = %d, face num = %d ##\n", rus->name.c_str(), rus->vertexNum, rus->faceNum); } if(SE_Application::getInstance()->SEHomeDebug) LOGI("## texture num = %d ##\n", stat.textureList.size()); std::list<SE_Application::TexUseData>::iterator texIt; for(texIt = stat.textureList.begin() ; texIt != stat.textureList.end() ; texIt++) { if(SE_Application::getInstance()->SEHomeDebug) LOGI("## texture : %s , num = %d\n", texIt->name.c_str(), texIt->num); } } } doDelayDestroy(); }
SE_Application::~SE_Application() { for(int i = 0 ; i < MAX_CAMERA_NUM ; i++) { if(mCameraArray[i]) { delete mCameraArray[i]; } } if(mParticleSystemManager) delete mParticleSystemManager; if(mSceneManager) delete mSceneManager; if(mResourceManager) delete mResourceManager; if(mInputManager) delete mInputManager; if(mAnimationManager) delete mAnimationManager; /* if(mElementManager) delete mElementManager; */ if(mRenderTargetManager) delete mRenderTargetManager; SE_CommandFactoryList::iterator it; for(it = mCommandFactoryList.begin() ; it != mCommandFactoryList.end() ; it++) { delete it->factory; } delete mRenderManager; #ifdef ANDROID if(mAssetManager) { delete mAssetManager; } #endif if(mThreadManager) { delete mThreadManager; } if(mRenderSystemCapabilities) { delete mRenderSystemCapabilities; } // if(mUIManager) // { // delete mUIManager; // } #ifdef EDITOR if(mEditorManager) { delete mEditorManager; } #endif if(mPluginsManager) { delete mPluginsManager; } if(mDynamicLibManager) { delete mDynamicLibManager; } if(mRenderUnitManager) { delete mRenderUnitManager; } doDelayDestroy(); std::list<SE_ResourceManager*>::iterator itloader = mLoaderList.begin(); for(;itloader != mLoaderList.end();itloader++) { SE_ResourceManager* r = *itloader; delete r; } mLoaderList.clear(); }