diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp
index a118152ed..f02432ba8 100644
--- a/apps/openmw/engine.cpp
+++ b/apps/openmw/engine.cpp
@@ -362,14 +362,9 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings)
// Create sound system
mEnvironment.setSoundManager (new MWSound::SoundManager(mUseSound));
- // TODO: play pre-load intro videos. Need to find a way to have them receive input.
- // Make videoplayer a MyGUI widget?
- /*
- {
- MWRender::VideoPlayer player(mOgre->getScene(), mOgre->getWindow());
- player.playVideo("mw_logo.bik", 1);
- }
- */
+ std::string logo = mFallbackMap["Movies_Company_Logo"];
+ if (!logo.empty())
+ window->playVideo(logo, 1);
// Create the world
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?
MWBase::Environment::get().getSoundManager()->streamMusic("Special/morrowind title.mp3");
- // TODO: there are other intro videos, too. They need to be imported from Morrowind.ini.
- // Unfortunately those must play BEFORE any loading is done, which will currently not work.
- // The videoplayer is created by World, so all content files must be loaded first...
- MWBase::Environment::get().getWindowManager()->playVideo("mw_logo.bik", true);
+ std::string logo = mFallbackMap["Movies_Morrowind_Logo"];
+ if (!logo.empty())
+ MWBase::Environment::get().getWindowManager()->playVideo(logo, true);
}
catch (...) {}
}
diff --git a/apps/openmw/mwbase/inputmanager.hpp b/apps/openmw/mwbase/inputmanager.hpp
index 42922a5b3..d44da4974 100644
--- a/apps/openmw/mwbase/inputmanager.hpp
+++ b/apps/openmw/mwbase/inputmanager.hpp
@@ -25,7 +25,7 @@ namespace MWBase
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;
diff --git a/apps/openmw/mwgui/loadingscreen.cpp b/apps/openmw/mwgui/loadingscreen.cpp
index 37e29591b..b3f70a5ab 100644
--- a/apps/openmw/mwgui/loadingscreen.cpp
+++ b/apps/openmw/mwgui/loadingscreen.cpp
@@ -226,7 +226,7 @@ namespace MWGui
}
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
// window contents, but don't swap buffers (which would have
diff --git a/apps/openmw/mwgui/windowmanagerimp.cpp b/apps/openmw/mwgui/windowmanagerimp.cpp
index ca8459fa1..1e019aaa9 100644
--- a/apps/openmw/mwgui/windowmanagerimp.cpp
+++ b/apps/openmw/mwgui/windowmanagerimp.cpp
@@ -1437,7 +1437,7 @@ namespace MWGui
while (mVideoWidget->update())
{
- MWBase::Environment::get().getInputManager()->update(0, false);
+ MWBase::Environment::get().getInputManager()->update(0, true, false);
mRendering->getWindow()->update();
}
diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp
index 840a3f71a..e2d4f8cb2 100644
--- a/apps/openmw/mwinput/inputmanagerimp.cpp
+++ b/apps/openmw/mwinput/inputmanagerimp.cpp
@@ -96,12 +96,12 @@ namespace MWInput
: mOgre(ogre)
, mPlayer(NULL)
, mEngine(engine)
- , mMouseLookEnabled(true)
+ , mMouseLookEnabled(false)
, mMouseX(ogre.getWindow()->getWidth ()/2.f)
, mMouseY(ogre.getWindow()->getHeight ()/2.f)
, mMouseWheel(0)
, mDragDrop(false)
- , mGuiCursorEnabled(false)
+ , mGuiCursorEnabled(true)
, mUserFile(userFile)
, mUserFileExists(userFileExists)
, 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->capture(loading);
+ mInputManager->capture(disableEvents);
// inject some fake mouse movement to force updating MyGUI's widget states
MyGUI::InputManager::getInstance().injectMouseMove( int(mMouseX), int(mMouseY), mMouseWheel);
// update values of channels (as a result of pressed keys)
- if (!loading)
+ if (!disableControls)
mInputBinder->update(dt);
+ if (disableControls)
+ return;
+
bool grab = !MWBase::Environment::get().getWindowManager()->containsMode(MWGui::GM_MainMenu)
&& MWBase::Environment::get().getWindowManager()->getMode() != MWGui::GM_Console;
@@ -288,9 +291,6 @@ namespace MWInput
mInputManager->warpMouse(mMouseX, mMouseY);
}
- if (loading)
- return;
-
// Disable movement in Gui mode
if (MWBase::Environment::get().getWindowManager()->isGuiMode()
|| MWBase::Environment::get().getStateManager()->getState() != MWBase::StateManager::State_Running)
diff --git a/apps/openmw/mwinput/inputmanagerimp.hpp b/apps/openmw/mwinput/inputmanagerimp.hpp
index 2eab03a34..87fbda25c 100644
--- a/apps/openmw/mwinput/inputmanagerimp.hpp
+++ b/apps/openmw/mwinput/inputmanagerimp.hpp
@@ -68,7 +68,7 @@ namespace MWInput
/// Clear all savegame-specific data
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; }
diff --git a/files/mygui/openmw_layers.xml b/files/mygui/openmw_layers.xml
index 6f7736994..e66f3fc01 100644
--- a/files/mygui/openmw_layers.xml
+++ b/files/mygui/openmw_layers.xml
@@ -9,6 +9,6 @@
-
+