Play company logo movie

This commit is contained in:
scrawl 2014-03-27 19:51:48 +01:00
parent 5906d795c0
commit f2cd37edd0
7 changed files with 19 additions and 25 deletions

View file

@ -362,14 +362,9 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings)
// Create sound system // Create sound system
mEnvironment.setSoundManager (new MWSound::SoundManager(mUseSound)); mEnvironment.setSoundManager (new MWSound::SoundManager(mUseSound));
// TODO: play pre-load intro videos. Need to find a way to have them receive input. std::string logo = mFallbackMap["Movies_Company_Logo"];
// Make videoplayer a MyGUI widget? if (!logo.empty())
/* window->playVideo(logo, 1);
{
MWRender::VideoPlayer player(mOgre->getScene(), mOgre->getWindow());
player.playVideo("mw_logo.bik", 1);
}
*/
// Create the world // Create the world
mEnvironment.setWorld( new MWWorld::World (*mOgre, mFileCollections, mContentFiles, mEnvironment.setWorld( new MWWorld::World (*mOgre, mFileCollections, mContentFiles,
@ -453,10 +448,9 @@ void OMW::Engine::go()
// Is there an ini setting for this filename or something? // Is there an ini setting for this filename or something?
MWBase::Environment::get().getSoundManager()->streamMusic("Special/morrowind title.mp3"); MWBase::Environment::get().getSoundManager()->streamMusic("Special/morrowind title.mp3");
// TODO: there are other intro videos, too. They need to be imported from Morrowind.ini. std::string logo = mFallbackMap["Movies_Morrowind_Logo"];
// Unfortunately those must play BEFORE any loading is done, which will currently not work. if (!logo.empty())
// The videoplayer is created by World, so all content files must be loaded first... MWBase::Environment::get().getWindowManager()->playVideo(logo, true);
MWBase::Environment::get().getWindowManager()->playVideo("mw_logo.bik", true);
} }
catch (...) {} catch (...) {}
} }

View file

@ -25,7 +25,7 @@ namespace MWBase
virtual ~InputManager() {} virtual ~InputManager() {}
virtual void update(float dt, bool loading) = 0; virtual void update(float dt, bool disableControls, bool disableEvents=false) = 0;
virtual void changeInputMode(bool guiMode) = 0; virtual void changeInputMode(bool guiMode) = 0;

View file

@ -226,7 +226,7 @@ namespace MWGui
} }
mSceneMgr->setSpecialCaseRenderQueueMode(Ogre::SceneManager::SCRQM_EXCLUDE); mSceneMgr->setSpecialCaseRenderQueueMode(Ogre::SceneManager::SCRQM_EXCLUDE);
MWBase::Environment::get().getInputManager()->update(0, true); MWBase::Environment::get().getInputManager()->update(0, true, true);
// First, swap buffers from last draw, then, queue an update of the // First, swap buffers from last draw, then, queue an update of the
// window contents, but don't swap buffers (which would have // window contents, but don't swap buffers (which would have

View file

@ -1437,7 +1437,7 @@ namespace MWGui
while (mVideoWidget->update()) while (mVideoWidget->update())
{ {
MWBase::Environment::get().getInputManager()->update(0, false); MWBase::Environment::get().getInputManager()->update(0, true, false);
mRendering->getWindow()->update(); mRendering->getWindow()->update();
} }

View file

@ -96,12 +96,12 @@ namespace MWInput
: mOgre(ogre) : mOgre(ogre)
, mPlayer(NULL) , mPlayer(NULL)
, mEngine(engine) , mEngine(engine)
, mMouseLookEnabled(true) , mMouseLookEnabled(false)
, mMouseX(ogre.getWindow()->getWidth ()/2.f) , mMouseX(ogre.getWindow()->getWidth ()/2.f)
, mMouseY(ogre.getWindow()->getHeight ()/2.f) , mMouseY(ogre.getWindow()->getHeight ()/2.f)
, mMouseWheel(0) , mMouseWheel(0)
, mDragDrop(false) , mDragDrop(false)
, mGuiCursorEnabled(false) , mGuiCursorEnabled(true)
, mUserFile(userFile) , mUserFile(userFile)
, mUserFileExists(userFileExists) , mUserFileExists(userFileExists)
, mInvertY (Settings::Manager::getBool("invert y axis", "Input")) , mInvertY (Settings::Manager::getBool("invert y axis", "Input"))
@ -256,18 +256,21 @@ namespace MWInput
} }
} }
void InputManager::update(float dt, bool loading) void InputManager::update(float dt, bool disableControls, bool disableEvents)
{ {
mInputManager->setMouseVisible(MWBase::Environment::get().getWindowManager()->getCursorVisible()); mInputManager->setMouseVisible(MWBase::Environment::get().getWindowManager()->getCursorVisible());
mInputManager->capture(loading); mInputManager->capture(disableEvents);
// inject some fake mouse movement to force updating MyGUI's widget states // inject some fake mouse movement to force updating MyGUI's widget states
MyGUI::InputManager::getInstance().injectMouseMove( int(mMouseX), int(mMouseY), mMouseWheel); MyGUI::InputManager::getInstance().injectMouseMove( int(mMouseX), int(mMouseY), mMouseWheel);
// update values of channels (as a result of pressed keys) // update values of channels (as a result of pressed keys)
if (!loading) if (!disableControls)
mInputBinder->update(dt); mInputBinder->update(dt);
if (disableControls)
return;
bool grab = !MWBase::Environment::get().getWindowManager()->containsMode(MWGui::GM_MainMenu) bool grab = !MWBase::Environment::get().getWindowManager()->containsMode(MWGui::GM_MainMenu)
&& MWBase::Environment::get().getWindowManager()->getMode() != MWGui::GM_Console; && MWBase::Environment::get().getWindowManager()->getMode() != MWGui::GM_Console;
@ -288,9 +291,6 @@ namespace MWInput
mInputManager->warpMouse(mMouseX, mMouseY); mInputManager->warpMouse(mMouseX, mMouseY);
} }
if (loading)
return;
// Disable movement in Gui mode // Disable movement in Gui mode
if (MWBase::Environment::get().getWindowManager()->isGuiMode() if (MWBase::Environment::get().getWindowManager()->isGuiMode()
|| MWBase::Environment::get().getStateManager()->getState() != MWBase::StateManager::State_Running) || MWBase::Environment::get().getStateManager()->getState() != MWBase::StateManager::State_Running)

View file

@ -68,7 +68,7 @@ namespace MWInput
/// Clear all savegame-specific data /// Clear all savegame-specific data
virtual void clear(); virtual void clear();
virtual void update(float dt, bool loading); virtual void update(float dt, bool disableControls, bool disableEvents=false);
void setPlayer (MWWorld::Player* player) { mPlayer = player; } void setPlayer (MWWorld::Player* player) { mPlayer = player; }

View file

@ -9,6 +9,6 @@
<Layer name="Popup" overlapped="true" peek="true"/> <Layer name="Popup" overlapped="true" peek="true"/>
<Layer name="DragAndDrop" overlapped="false" peek="false"/> <Layer name="DragAndDrop" overlapped="false" peek="false"/>
<Layer name="LoadingScreen" overlapped="false" peek="true"/> <Layer name="LoadingScreen" overlapped="false" peek="true"/>
<Layer name="Overlay" overlapped="false" peek="false"/> <Layer name="Overlay" overlapped="false" peek="true"/>
<Layer name="Pointer" overlapped="false" peek="false"/> <Layer name="Pointer" overlapped="false" peek="false"/>
</MyGUI> </MyGUI>