diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 81cecc2c8..4a93daec7 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -23,15 +23,15 @@ add_openmw_dir (mwrender actors objects renderingmanager animation sky npcanimation vismask creatureanimation effectmanager util renderinginterface debugging rendermode bulletdebugdraw -# camera activatoranimation +# camera # localmap occlusionquery water shadows # characterpreview globalmap ripplesimulation refraction -# terrainstorage renderconst weaponanimation +# terrainstorage weaponanimation ) -#add_openmw_dir (mwinput -# inputmanagerimp -# ) +add_openmw_dir (mwinput + inputmanagerimp + ) add_openmw_dir (mwgui layout textinput widgets race class birth review windowmanagerimp console dialogue diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 15fee0cb1..5be9317eb 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -28,7 +28,7 @@ #include -//#include "mwinput/inputmanagerimp.hpp" +#include "mwinput/inputmanagerimp.hpp" #include "mwgui/windowmanagerimp.hpp" @@ -79,7 +79,7 @@ void OMW::Engine::frame(float frametime) mEnvironment.setFrameDuration (frametime); // update input - //MWBase::Environment::get().getInputManager()->update(frametime, false); + MWBase::Environment::get().getInputManager()->update(frametime, false); // When the window is minimized, pause everything. Currently this *has* to be here to work around a MyGUI bug. // If we are not currently rendering, then RenderItems will not be reused resulting in a memory leak upon changing widget textures. @@ -335,8 +335,9 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings) else gameControllerdb = ""; //if it doesn't exist, pass in an empty string - //MWInput::InputManager* input = new MWInput::InputManager (*mOgre, *this, keybinderUser, keybinderUserExists, gameControllerdb, mGrab); - //mEnvironment.setInputManager (input); + // FIXME: shouldn't depend on Engine + MWInput::InputManager* input = new MWInput::InputManager (*this, keybinderUser, keybinderUserExists, gameControllerdb, mGrab); + mEnvironment.setInputManager (input); std::string myguiResources = (mResDir / "mygui").string(); osg::ref_ptr guiRoot = new osg::Group; @@ -354,7 +355,7 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings) { std::string logo = mFallbackMap["Movies_Company_Logo"]; if (!logo.empty()) - window->playVideo(logo, 1); + window->playVideo(logo, true); } // Create the world @@ -362,7 +363,7 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings) mFileCollections, mContentFiles, mEncoder, mFallbackMap, mActivationDistanceOverride, mCellName, mStartupScript)); MWBase::Environment::get().getWorld()->setupPlayer(); - //input->setPlayer(&mEnvironment.getWorld()->getPlayer()); + input->setPlayer(&mEnvironment.getWorld()->getPlayer()); window->initUI(); window->renderWorldMap(); diff --git a/apps/openmw/mwgui/loadingscreen.cpp b/apps/openmw/mwgui/loadingscreen.cpp index 3b13ed5a9..a7791d838 100644 --- a/apps/openmw/mwgui/loadingscreen.cpp +++ b/apps/openmw/mwgui/loadingscreen.cpp @@ -221,7 +221,7 @@ namespace MWGui mViewer->getUpdateVisitor()->setTraversalMask(MWRender::Mask_GUI); mViewer->getCamera()->setCullMask(MWRender::Mask_GUI); - //MWBase::Environment::get().getInputManager()->update(0, true, true); + MWBase::Environment::get().getInputManager()->update(0, true, true); mViewer->frame(); diff --git a/apps/openmw/mwgui/windowmanagerimp.cpp b/apps/openmw/mwgui/windowmanagerimp.cpp index 575d7045a..ebca96b19 100644 --- a/apps/openmw/mwgui/windowmanagerimp.cpp +++ b/apps/openmw/mwgui/windowmanagerimp.cpp @@ -334,7 +334,7 @@ namespace MWGui // Set up visibility updateVisible(); - //MWBase::Environment::get().getInputManager()->changeInputMode(false); + MWBase::Environment::get().getInputManager()->changeInputMode(false); } void WindowManager::renderWorldMap() @@ -834,7 +834,7 @@ namespace MWGui mMessageBoxManager->onFrame(0.f); MWBase::Environment::get().getInputManager()->update(0, true, false); - //mRendering->getWindow()->update(); + mViewer->frame(); } } } @@ -1132,8 +1132,8 @@ namespace MWGui mGuiModes.push_back(mode); - //bool gameMode = !isGuiMode(); - //MWBase::Environment::get().getInputManager()->changeInputMode(!gameMode); + bool gameMode = !isGuiMode(); + MWBase::Environment::get().getInputManager()->changeInputMode(!gameMode); updateVisible(); } @@ -1173,8 +1173,8 @@ namespace MWGui if (!mGuiModes.empty()) mGuiModes.pop_back(); - //bool gameMode = !isGuiMode(); - //MWBase::Environment::get().getInputManager()->changeInputMode(!gameMode); + bool gameMode = !isGuiMode(); + MWBase::Environment::get().getInputManager()->changeInputMode(!gameMode); updateVisible(); } @@ -1190,8 +1190,8 @@ namespace MWGui ++it; } - //bool gameMode = !isGuiMode(); - //MWBase::Environment::get().getInputManager()->changeInputMode(!gameMode); + bool gameMode = !isGuiMode(); + MWBase::Environment::get().getInputManager()->changeInputMode(!gameMode); updateVisible(); } @@ -1705,7 +1705,7 @@ namespace MWGui while (mVideoWidget->update() && !MWBase::Environment::get().getStateManager()->hasQuitRequest()) { - //MWBase::Environment::get().getInputManager()->update(0, true, false); + MWBase::Environment::get().getInputManager()->update(0, true, false); mViewer->frame(); } diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index 88d891a02..442a5e8b2 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -14,8 +14,6 @@ #include -#include - #include "../engine.hpp" #include "../mwbase/world.hpp" @@ -98,16 +96,16 @@ namespace namespace MWInput { - InputManager::InputManager(OEngine::Render::OgreRenderer &ogre, + InputManager::InputManager( OMW::Engine& engine, const std::string& userFile, bool userFileExists, const std::string& controllerBindingsFile, bool grab) - : mOgre(ogre) + : mInputManager(NULL) , mPlayer(NULL) , mEngine(engine) , mMouseLookEnabled(false) - , mMouseX(ogre.getWindow()->getWidth ()/2.f) - , mMouseY(ogre.getWindow()->getHeight ()/2.f) + , mMouseX(0)//ogre.getWindow()->getWidth ()/2.f) + , mMouseY(0)//ogre.getWindow()->getHeight ()/2.f) , mMouseWheel(0) , mDragDrop(false) , mGuiCursorEnabled(true) @@ -131,17 +129,18 @@ namespace MWInput , mFakeDeviceID(1) { + /* Ogre::RenderWindow* window = ogre.getWindow (); - mInputManager = new SFO::InputWrapper(mOgre.getSDLWindow(), mOgre.getWindow(), grab); mInputManager->setMouseEventCallback (this); mInputManager->setKeyboardEventCallback (this); mInputManager->setWindowEventCallback(this); mInputManager->setControllerEventCallback(this); + */ std::string file = userFileExists ? userFile : ""; mInputBinder = new ICS::InputControlSystem(file, true, this, NULL, A_Last); - adjustMouseRegion (window->getWidth(), window->getHeight()); + //adjustMouseRegion (window->getWidth(), window->getHeight()); loadKeyDefaults(); loadControllerDefaults(); @@ -199,7 +198,7 @@ namespace MWInput delete mInputBinder; - delete mInputManager; + //delete mInputManager; } void InputManager::setPlayerControlsEnabled(bool enabled) @@ -366,24 +365,24 @@ namespace MWInput void InputManager::updateCursorMode() { - bool grab = !MWBase::Environment::get().getWindowManager()->containsMode(MWGui::GM_MainMenu) - && MWBase::Environment::get().getWindowManager()->getMode() != MWGui::GM_Console; + //bool grab = !MWBase::Environment::get().getWindowManager()->containsMode(MWGui::GM_MainMenu) + // && MWBase::Environment::get().getWindowManager()->getMode() != MWGui::GM_Console; - bool was_relative = mInputManager->getMouseRelative(); + bool was_relative = 0;//mInputManager->getMouseRelative(); bool is_relative = !MWBase::Environment::get().getWindowManager()->isGuiMode(); // don't keep the pointer away from the window edge in gui mode // stop using raw mouse motions and switch to system cursor movements - mInputManager->setMouseRelative(is_relative); + //mInputManager->setMouseRelative(is_relative); //we let the mouse escape in the main menu - mInputManager->setGrabPointer(grab && (mGrabCursor || is_relative)); + //mInputManager->setGrabPointer(grab && (mGrabCursor || is_relative)); //we switched to non-relative mode, move our cursor to where the in-game //cursor is if( !is_relative && was_relative != is_relative ) { - mInputManager->warpMouse(static_cast(mMouseX), static_cast(mMouseY)); + //mInputManager->warpMouse(static_cast(mMouseX), static_cast(mMouseY)); } } @@ -391,9 +390,9 @@ namespace MWInput { mControlsDisabled = disableControls; - mInputManager->setMouseVisible(MWBase::Environment::get().getWindowManager()->getCursorVisible()); + //mInputManager->setMouseVisible(MWBase::Environment::get().getWindowManager()->getCursorVisible()); - mInputManager->capture(disableEvents); + //mInputManager->capture(disableEvents); // inject some fake mouse movement to force updating MyGUI's widget states MyGUI::InputManager::getInstance().injectMouseMove( int(mMouseX), int(mMouseY), mMouseWheel); @@ -427,7 +426,7 @@ namespace MWInput mMouseY = std::max(0.f, std::min(mMouseY, float(viewSize.height))); MyGUI::InputManager::getInstance().injectMouseMove(static_cast(mMouseX), static_cast(mMouseY), mMouseWheel); - mInputManager->warpMouse(static_cast(mMouseX), static_cast(mMouseY)); + //mInputManager->warpMouse(static_cast(mMouseX), static_cast(mMouseY)); } if (mMouseLookEnabled) { @@ -668,6 +667,7 @@ namespace MWInput // HACK: to make Morrowind's default keybinding for the console work without printing an extra "^" upon closing // This assumes that SDL_TextInput events always come *after* the key event // (which is somewhat reasonable, and hopefully true for all SDL platforms) + /* OIS::KeyCode kc = mInputManager->sdl2OISKeyCode(arg.keysym.sym); if (mInputBinder->getKeyBinding(mInputBinder->getControl(A_Console), ICS::Control::INCREASE) == arg.keysym.scancode @@ -685,6 +685,7 @@ namespace MWInput if (!mControlsDisabled && !consumed) mInputBinder->keyPressed (arg); mJoystickLastUsed = false; + */ } void InputManager::textInput(const SDL_TextInputEvent &arg) @@ -697,11 +698,13 @@ namespace MWInput void InputManager::keyReleased(const SDL_KeyboardEvent &arg ) { + /* mJoystickLastUsed = false; OIS::KeyCode kc = mInputManager->sdl2OISKeyCode(arg.keysym.sym); setPlayerControlsEnabled(!MyGUI::InputManager::getInstance().injectKeyRelease(MyGUI::KeyCode::Enum(kc))); mInputBinder->keyReleased (arg); + */ } void InputManager::mousePressed( const SDL_MouseButtonEvent &arg, Uint8 id ) @@ -827,9 +830,9 @@ namespace MWInput setPlayerControlsEnabled(!guiMode); //esc, to leave initial movie screen - OIS::KeyCode kc = mInputManager->sdl2OISKeyCode(SDLK_ESCAPE); - bool guiFocus = MyGUI::InputManager::getInstance().injectKeyPress(MyGUI::KeyCode::Enum(kc), 0); - setPlayerControlsEnabled(!guiFocus); + //OIS::KeyCode kc = mInputManager->sdl2OISKeyCode(SDLK_ESCAPE); + //bool guiFocus = MyGUI::InputManager::getInstance().injectKeyPress(MyGUI::KeyCode::Enum(kc), 0); + //setPlayerControlsEnabled(!guiFocus); if (!mControlsDisabled) mInputBinder->buttonPressed(deviceID, arg); @@ -853,9 +856,9 @@ namespace MWInput else mInputBinder->buttonReleased(deviceID, arg); - //to escape initial movie - OIS::KeyCode kc = mInputManager->sdl2OISKeyCode(SDLK_ESCAPE); - setPlayerControlsEnabled(!MyGUI::InputManager::getInstance().injectKeyRelease(MyGUI::KeyCode::Enum(kc))); + ///to escape initial movie + //OIS::KeyCode kc = mInputManager->sdl2OISKeyCode(SDLK_ESCAPE); + //setPlayerControlsEnabled(!MyGUI::InputManager::getInstance().injectKeyRelease(MyGUI::KeyCode::Enum(kc))); } void InputManager::axisMoved(int deviceID, const SDL_ControllerAxisEvent &arg ) @@ -885,7 +888,7 @@ namespace MWInput void InputManager::windowResized(int x, int y) { - mOgre.windowResized(x,y); + //mOgre.windowResized(x,y); } void InputManager::windowClosed() diff --git a/apps/openmw/mwinput/inputmanagerimp.hpp b/apps/openmw/mwinput/inputmanagerimp.hpp index 558801023..26a1fcb21 100644 --- a/apps/openmw/mwinput/inputmanagerimp.hpp +++ b/apps/openmw/mwinput/inputmanagerimp.hpp @@ -66,7 +66,7 @@ namespace MWInput public ICS::DetectingBindingListener { public: - InputManager(OEngine::Render::OgreRenderer &_ogre, + InputManager( OMW::Engine& engine, const std::string& userFile, bool userFileExists, const std::string& controllerBindingsFile, bool grab); @@ -143,7 +143,6 @@ namespace MWInput private: bool mJoystickLastUsed; - OEngine::Render::OgreRenderer &mOgre; MWWorld::Player* mPlayer; OMW::Engine& mEngine; diff --git a/apps/openmw/mwrender/activatoranimation.cpp b/apps/openmw/mwrender/activatoranimation.cpp deleted file mode 100644 index 1ef68f619..000000000 --- a/apps/openmw/mwrender/activatoranimation.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "activatoranimation.hpp" - -#include -#include - -#include - -#include "renderconst.hpp" - -namespace MWRender -{ - -ActivatorAnimation::~ActivatorAnimation() -{ -} - -ActivatorAnimation::ActivatorAnimation(const MWWorld::Ptr &ptr, const std::string& model) - : Animation(ptr, ptr.getRefData().getBaseNode()) -{ - if(!model.empty()) - { - setObjectRoot(model, false); - setRenderProperties(mObjectRoot, RV_Misc, RQG_Main, RQG_Alpha); - - addAnimSource(model); - } - else - { - // No model given. Create an object root anyway, so that lights can be added to it if needed. - mObjectRoot = NifOgre::ObjectScenePtr (new NifOgre::ObjectScene(mInsert->getCreator())); - } -} - -void ActivatorAnimation::addLight(const ESM::Light *light) -{ - addExtraLight(mInsert->getCreator(), mObjectRoot, light); -} - -void ActivatorAnimation::removeParticles() -{ - for (unsigned int i=0; imParticles.size(); ++i) - { - // Don't destroyParticleSystem, the ParticleSystemController is still holding a pointer to it. - // Don't setVisible, this could conflict with a VisController. - // The following will remove all spawned particles, then set the speed factor to zero so that no new ones will be spawned. - mObjectRoot->mParticles[i]->setSpeedFactor(0.f); - mObjectRoot->mParticles[i]->clear(); - } -} - -} diff --git a/apps/openmw/mwrender/activatoranimation.hpp b/apps/openmw/mwrender/activatoranimation.hpp deleted file mode 100644 index a234defe7..000000000 --- a/apps/openmw/mwrender/activatoranimation.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef GAME_RENDER_ACTIVATORANIMATION_H -#define GAME_RENDER_ACTIVATORANIMATION_H - -#include "animation.hpp" - -namespace MWWorld -{ - class Ptr; -} - -namespace MWRender -{ - class ActivatorAnimation : public Animation - { - public: - ActivatorAnimation(const MWWorld::Ptr& ptr, const std::string &model); - virtual ~ActivatorAnimation(); - - void addLight(const ESM::Light *light); - void removeParticles(); - }; -} - -#endif diff --git a/apps/openmw/mwscript/interpretercontext.cpp b/apps/openmw/mwscript/interpretercontext.cpp index fab65b152..a8c04aa4b 100644 --- a/apps/openmw/mwscript/interpretercontext.cpp +++ b/apps/openmw/mwscript/interpretercontext.cpp @@ -270,7 +270,6 @@ namespace MWScript std::string InterpreterContext::getActionBinding(const std::string& action) const { - /* MWBase::InputManager* input = MWBase::Environment::get().getInputManager(); std::vector actions = input->getActionKeySorting (); for (std::vector::const_iterator it = actions.begin(); it != actions.end(); ++it) @@ -287,7 +286,6 @@ namespace MWScript return input->getActionKeyBindingName (*it); } } - */ return "None"; }