//---------------------------------------------------------------------------- bool GamePlayApp::OnIdle () { bool odle = Application::OnIdle(); if (!odle) return false; if (IsIsInBackground()) return false; if (!mIsProjectCreated) return false; Project *proj = Project::GetSingletonPtr(); if (!proj) return false; Scene *scene = proj->GetScene(); UIView *uiView = PX2_UIM.GetDefaultView(); if (mRenderer->PreDraw()) { mRenderer->SetViewport(0, 0, mWidth, mHeight); mRenderer->InitRenderStates(); mRenderer->ClearBuffers(); // scene if (scene) { mRenderer->SetCamera(scene->GetCameraActor()->GetCamera()); scene->CallRendererSetViewport(); mRenderer->Draw(scene->GetCuller().GetVisibleSet().Sort()); } // ui if (uiView && proj->IsShowUI()) { mRenderer->InitRenderStates(); mRenderer->ClearDepthBuffer(); CameraPtr beforeCam = mRenderer->GetCamera(); mRenderer->SetCamera(uiView->GetCamera()); uiView->CallRendererSetViewport (); mRenderer->Draw(uiView->GetCuller().GetVisibleSet().Sort()); if (proj->IsShowProjectInfo()) { DrawInfo(uiView->GetCamera()); } mRenderer->SetCamera(beforeCam); } mRenderer->PostDraw(); mRenderer->DisplayColorBuffer(); } return true; }
//---------------------------------------------------------------------------- void GamePlayApp::CreateProject () { if (mIsProjectCreated) return; PX2_LOG_INFO("Begin CreateProject."); mWireProperty = new0 WireProperty(); mWireProperty->Enabled = true; mCullProperty = new0 CullProperty(); mCullProperty->Enabled = false; mDepthProperty = new DepthProperty(); // clear color mClearColor = Project::GetSingleton().GetColor(); mRenderer->SetClearColor(mClearColor); // load scene PX2_LOG_INFO("Begin load scene."); std::string scenePath = Project::GetSingleton().GetSceneFilename(); PX2_LOG_INFO("scenePath is %s", scenePath.c_str()); if ("" != scenePath) { ObjectPtr sceneObj = 0; sceneObj = ResourceManager::GetSingleton().BlockLoad(scenePath); Scene *scene = DynamicCast<Scene>(sceneObj); if (scene) { Camera *cam = scene->GetCameraActor()->GetCamera(); mRenderer->SetCamera(cam); GraphicsRoot::GetSingleton().SetCamera(cam); scene->GetCuller().SetCamera(cam); scene->ShowHelpMovables(false); Project::GetSingleton().SetScene(scene); PX2_LOG_INFO("Load scene successful."); } else { PX2_LOG_INFO("Load scene failed."); } } PX2_LOG_INFO("End load scene."); // ui PX2_LOG_INFO("Begin load UI."); std::string uiPath = Project::GetSingleton().GetUIFilename(); PX2_LOG_INFO("uiPath is %s: ", uiPath.c_str()); if ("" != uiPath) { ObjectPtr uiObj = 0; uiObj = ResourceManager::GetSingleton().BlockLoad(uiPath); UIFrame *ui = DynamicCast<UIFrame>(uiObj); if (ui) { Project::GetSingleton().SetUI(ui); PX2_LOG_INFO("Load ui successful."); } else { PX2_LOG_INFO("Load ui failed."); } } PX2_LOG_INFO("End load UI."); PX2_SM.CallFile("Data/scripts/onCreateProject.lua"); mIsProjectCreated = true; PX2_LOG_INFO("End CreateProject."); }