From 2f0b47fc38314073388030c678ac829a80cea0d6 Mon Sep 17 00:00:00 2001 From: scrawl Date: Thu, 13 Sep 2012 00:21:58 +0200 Subject: [PATCH] test --- apps/openmw/mwbase/windowmanager.hpp | 1 + apps/openmw/mwgui/loadingscreen.cpp | 34 ++++++++++++++------------ apps/openmw/mwgui/loadingscreen.hpp | 1 + apps/openmw/mwgui/windowmanagerimp.cpp | 5 ++++ apps/openmw/mwgui/windowmanagerimp.hpp | 1 + apps/openmw/mwrender/sky.cpp | 3 --- apps/openmw/mwrender/sky.hpp | 1 - apps/openmw/mwworld/scene.cpp | 5 +++- 8 files changed, 30 insertions(+), 21 deletions(-) diff --git a/apps/openmw/mwbase/windowmanager.hpp b/apps/openmw/mwbase/windowmanager.hpp index bd8b7eb18..58fe180e9 100644 --- a/apps/openmw/mwbase/windowmanager.hpp +++ b/apps/openmw/mwbase/windowmanager.hpp @@ -218,6 +218,7 @@ namespace MWBase virtual void executeInConsole (const std::string& path) = 0; virtual void setLoadingProgress (const std::string& stage, int depth, int current, int total) = 0; + virtual void loadingDone() = 0; }; } diff --git a/apps/openmw/mwgui/loadingscreen.cpp b/apps/openmw/mwgui/loadingscreen.cpp index c25fad6bc..a56075d4d 100644 --- a/apps/openmw/mwgui/loadingscreen.cpp +++ b/apps/openmw/mwgui/loadingscreen.cpp @@ -80,11 +80,7 @@ namespace MWGui mTotalRefsLoading = total; } - if (mTotalCellsLoading == 0) - { - loadingOff(); - return; - } + assert (mTotalCellsLoading != 0); float refProgress; if (mTotalRefsLoading <= 1) @@ -101,11 +97,6 @@ namespace MWGui float progress = (float(mCurrentCellLoading)+refProgress) / float(mTotalCellsLoading); assert(progress <= 1 && progress >= 0); - if (progress >= 1) - { - loadingOff(); - return; - } mLoadingText->setCaption(stage + "... "); mProgressBar->setProgressPosition (static_cast(progress * 1000)); @@ -138,13 +129,14 @@ namespace MWGui if (!hasCompositor) { - mWindow->getViewport(0)->setClearEveryFrame(false); + //mWindow->getViewport(0)->setClearEveryFrame(false); } else { if (!mFirstLoad) - mBackgroundMaterial->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName(chain->getCompositor ("gbufferFinalizer")->getTextureInstance ("no_mrt_output", 0)->getName()); - mRectangle->setVisible(true); + { + //mBackgroundMaterial->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName(chain->getCompositor ("gbufferFinalizer")->getTextureInstance ("no_mrt_output", 0)->getName()); + } for (unsigned int i = 0; igetNumCompositors(); ++i) { @@ -152,6 +144,9 @@ namespace MWGui } } + mRectangle->setVisible(hasCompositor || mFirstLoad); + std::cout << "rect vis? " << mRectangle->getVisible () << " first load? " << mFirstLoad << std::endl; + mBackgroundMaterial->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName("Splash/Splash_Bonelord.tga"); mWindow->update(); if (!hasCompositor) @@ -162,17 +157,24 @@ namespace MWGui { Ogre::CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0), chain->getCompositor(i)->getCompositor()->getName(), true); } - mRectangle->setVisible(false); } + mRectangle->setVisible(false); + // resume 3d rendering mSceneMgr->clearSpecialCaseRenderQueues(); mSceneMgr->setSpecialCaseRenderQueueMode(Ogre::SceneManager::SCRQM_EXCLUDE); } } + void LoadingScreen::loadingDone() + { + loadingOff(); + } + void LoadingScreen::loadingOn() { + std::cout << "loading on " <setVisible(false); + //mFirstLoad = false; mWindowManager.removeGuiMode(GM_Loading); mWindowManager.removeGuiMode(GM_LoadingWallpaper); diff --git a/apps/openmw/mwgui/loadingscreen.hpp b/apps/openmw/mwgui/loadingscreen.hpp index 5cee37a51..28d970040 100644 --- a/apps/openmw/mwgui/loadingscreen.hpp +++ b/apps/openmw/mwgui/loadingscreen.hpp @@ -15,6 +15,7 @@ namespace MWGui virtual ~LoadingScreen(); void setLoadingProgress (const std::string& stage, int depth, int current, int total); + void loadingDone(); void onResChange(int w, int h); diff --git a/apps/openmw/mwgui/windowmanagerimp.cpp b/apps/openmw/mwgui/windowmanagerimp.cpp index a4dd54e78..99f476574 100644 --- a/apps/openmw/mwgui/windowmanagerimp.cpp +++ b/apps/openmw/mwgui/windowmanagerimp.cpp @@ -918,3 +918,8 @@ void WindowManager::setLoadingProgress (const std::string& stage, int depth, int { mLoadingScreen->setLoadingProgress (stage, depth, current, total); } + +void WindowManager::loadingDone () +{ + mLoadingScreen->loadingDone (); +} diff --git a/apps/openmw/mwgui/windowmanagerimp.hpp b/apps/openmw/mwgui/windowmanagerimp.hpp index 5327bb868..e16b03e43 100644 --- a/apps/openmw/mwgui/windowmanagerimp.hpp +++ b/apps/openmw/mwgui/windowmanagerimp.hpp @@ -197,6 +197,7 @@ namespace MWGui virtual void executeInConsole (const std::string& path); virtual void setLoadingProgress (const std::string& stage, int depth, int current, int total); + virtual void loadingDone(); private: OEngine::GUI::MyGUIManager *mGuiManager; diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index eba605d0c..60ecd4303 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -11,9 +11,6 @@ #include #include #include -#include -#include -#include #include diff --git a/apps/openmw/mwrender/sky.hpp b/apps/openmw/mwrender/sky.hpp index 09d56dbd9..ee1360853 100644 --- a/apps/openmw/mwrender/sky.hpp +++ b/apps/openmw/mwrender/sky.hpp @@ -24,7 +24,6 @@ namespace Ogre class Entity; class BillboardSet; class TextureUnitState; - class Overlay; } namespace MWRender diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index c3843b831..8a4a09358 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -290,7 +290,6 @@ namespace MWWorld mCurrentCell = *iter; - // adjust player playerCellChange (mCurrentCell, position, adjustPlayerPos); @@ -300,6 +299,8 @@ namespace MWWorld mRendering.switchToExterior(); mCellChanged = true; + + MWBase::Environment::get().getWindowManager ()->loadingDone (); } //We need the ogre renderer and a scene node. @@ -369,6 +370,8 @@ namespace MWWorld MWBase::Environment::get().getWorld()->adjustSky(); mCellChanged = true; + + MWBase::Environment::get().getWindowManager ()->loadingDone (); } void Scene::changeToExteriorCell (const ESM::Position& position)