diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 2ebfdeb8ae..e851fbe254 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -342,10 +342,10 @@ bool OMW::Engine::frame(unsigned frameNumber, float frametime) mViewer->eventTraversal(); mViewer->updateTraversal(); - // update GUI by world data + // update focus object for GUI { - ScopedProfile profile(frameStart, frameNumber, *timer, *stats); - mWorld->updateWindowManager(); + ScopedProfile profile(frameStart, frameNumber, *timer, *stats); + mWorld->updateFocusObject(); } // if there is a separate Lua thread, it starts the update now diff --git a/apps/openmw/mwbase/world.hpp b/apps/openmw/mwbase/world.hpp index 983e2ef228..e67e21c175 100644 --- a/apps/openmw/mwbase/world.hpp +++ b/apps/openmw/mwbase/world.hpp @@ -257,10 +257,10 @@ namespace MWBase = 0; ///< @param changeEvent If false, do not trigger cell change flag or detect worldspace changes - virtual MWWorld::Ptr getFacedObject() = 0; + virtual MWWorld::Ptr getFocusObject() = 0; ///< Return pointer to the object the player is looking at, if it is within activation range - virtual float getDistanceToFacedObject() = 0; + virtual float getDistanceToFocusObject() = 0; virtual float getMaxActivationDistance() const = 0; diff --git a/apps/openmw/mwclass/door.cpp b/apps/openmw/mwclass/door.cpp index 9fe7e92ffa..d6df1bba5d 100644 --- a/apps/openmw/mwclass/door.cpp +++ b/apps/openmw/mwclass/door.cpp @@ -124,7 +124,7 @@ namespace MWClass // make door glow if player activates it with telekinesis if (actor == MWMechanics::getPlayer() - && MWBase::Environment::get().getWorld()->getDistanceToFacedObject() + && MWBase::Environment::get().getWorld()->getDistanceToFocusObject() > MWBase::Environment::get().getWorld()->getMaxActivationDistance()) { MWRender::Animation* animation = MWBase::Environment::get().getWorld()->getAnimation(ptr); @@ -184,7 +184,7 @@ namespace MWClass if (ptr.getCellRef().getTeleport()) { if (actor == MWMechanics::getPlayer() - && MWBase::Environment::get().getWorld()->getDistanceToFacedObject() + && MWBase::Environment::get().getWorld()->getDistanceToFocusObject() > MWBase::Environment::get().getWorld()->getMaxActivationDistance()) { // player activated teleport door with telekinesis diff --git a/apps/openmw/mwgui/hud.cpp b/apps/openmw/mwgui/hud.cpp index 56f18e9b0e..e157f291e8 100644 --- a/apps/openmw/mwgui/hud.cpp +++ b/apps/openmw/mwgui/hud.cpp @@ -225,7 +225,7 @@ namespace MWGui if (!winMgr->isConsoleMode() && (mode != GM_Container) && (mode != GM_Inventory)) return; - MWWorld::Ptr object = MWBase::Environment::get().getWorld()->getFacedObject(); + MWWorld::Ptr object = MWBase::Environment::get().getWorld()->getFocusObject(); if (winMgr->isConsoleMode()) winMgr->setConsoleSelectedObject(object); diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index bd84776c00..0b7c8de56b 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -1745,7 +1745,7 @@ namespace MWMechanics { // TODO: this will only work for the player, and needs to be fixed if NPCs should ever use // lockpicks/probes. - MWWorld::Ptr target = world->getFacedObject(); + MWWorld::Ptr target = world->getFocusObject(); if (!target.isEmpty()) { diff --git a/apps/openmw/mwworld/actiontrap.cpp b/apps/openmw/mwworld/actiontrap.cpp index 5a0e3c7b86..f256ff4af4 100644 --- a/apps/openmw/mwworld/actiontrap.cpp +++ b/apps/openmw/mwworld/actiontrap.cpp @@ -18,7 +18,7 @@ namespace MWWorld // Using activation distance as the trap range. if (actor == MWBase::Environment::get().getWorld()->getPlayerPtr() - && MWBase::Environment::get().getWorld()->getDistanceToFacedObject() + && MWBase::Environment::get().getWorld()->getDistanceToFocusObject() > trapRange) // player activated object outside range of trap { MWMechanics::CastSpell cast(mTrapSource, mTrapSource); diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index b776f27f06..fca3a30a2c 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -193,7 +193,7 @@ namespace MWWorld if (playerStats.isParalyzed() || playerStats.getKnockedDown() || playerStats.isDead()) return; - MWWorld::Ptr toActivate = MWBase::Environment::get().getWorld()->getFacedObject(); + MWWorld::Ptr toActivate = MWBase::Environment::get().getWorld()->getFocusObject(); if (toActivate.isEmpty()) return; diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index 957ab98f24..5caeea45dd 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -261,7 +261,7 @@ namespace MWWorld , mActivationDistanceOverride(activationDistanceOverride) , mStartCell(startCell) , mSwimHeightScale(0.f) - , mDistanceToFacedObject(-1.f) + , mDistanceToFocusObject(-1.f) , mTeleportEnabled(true) , mLevitationEnabled(true) , mGoToJail(false) @@ -999,33 +999,33 @@ namespace MWWorld return static_cast(iMaxActivateDist); } - MWWorld::Ptr World::getFacedObject() + MWWorld::Ptr World::getFocusObject() { - MWWorld::Ptr facedObject; + MWWorld::Ptr focusObject; if (MWBase::Environment::get().getStateManager()->getState() == MWBase::StateManager::State_NoGame) - return facedObject; + return focusObject; if (MWBase::Environment::get().getWindowManager()->isGuiMode() && MWBase::Environment::get().getWindowManager()->isConsoleMode()) - facedObject = getFacedObject(getMaxActivationDistance() * 50, false); + focusObject = getFocusObject(getMaxActivationDistance() * 50, false); else { float activationDistance = getActivationDistancePlusTelekinesis(); - facedObject = getFacedObject(activationDistance, true); + focusObject = getFocusObject(activationDistance, true); - if (!facedObject.isEmpty() && !facedObject.getClass().allowTelekinesis(facedObject) - && mDistanceToFacedObject > getMaxActivationDistance() + if (!focusObject.isEmpty() && !focusObject.getClass().allowTelekinesis(focusObject) + && mDistanceToFocusObject > getMaxActivationDistance() && !MWBase::Environment::get().getWindowManager()->isGuiMode()) return nullptr; } - return facedObject; + return focusObject; } - float World::getDistanceToFacedObject() + float World::getDistanceToFocusObject() { - return mDistanceToFacedObject; + return mDistanceToFocusObject; } osg::Matrixf World::getActorHeadTransform(const MWWorld::ConstPtr& actor) const @@ -1772,12 +1772,12 @@ namespace MWWorld MWBase::Environment::get().getSoundManager()->setListenerPosDir(listenerPos, forward, up, underwater); } - void World::updateWindowManager() + void World::updateFocusObject() { try { // inform the GUI about focused object - MWWorld::Ptr object = getFacedObject(); + MWWorld::Ptr object = getFocusObject(); // retrieve the object's top point's screen position so we know where to place the floating label if (!object.isEmpty()) @@ -1798,15 +1798,15 @@ namespace MWWorld } catch (std::exception& e) { - Log(Debug::Error) << "Error updating window manager: " << e.what(); + Log(Debug::Error) << "Error updating focus object: " << e.what(); } } - MWWorld::Ptr World::getFacedObject(float maxDistance, bool ignorePlayer) + MWWorld::Ptr World::getFocusObject(float maxDistance, bool ignorePlayer) { const float camDist = mRendering->getCamera()->getCameraDistance(); maxDistance += camDist; - MWWorld::Ptr facedObject; + MWWorld::Ptr focusObject; MWRender::RenderingManager::RayResult rayToObject; if (MWBase::Environment::get().getWindowManager()->isGuiMode()) @@ -1818,14 +1818,14 @@ namespace MWWorld else rayToObject = mRendering->castCameraToViewportRay(0.5f, 0.5f, maxDistance, ignorePlayer); - facedObject = rayToObject.mHitObject; - if (facedObject.isEmpty() && rayToObject.mHitRefnum.isSet()) - facedObject = MWBase::Environment::get().getWorldModel()->getPtr(rayToObject.mHitRefnum); + focusObject = rayToObject.mHitObject; + if (focusObject.isEmpty() && rayToObject.mHitRefnum.isSet()) + focusObject = MWBase::Environment::get().getWorldModel()->getPtr(rayToObject.mHitRefnum); if (rayToObject.mHit) - mDistanceToFacedObject = (rayToObject.mRatio * maxDistance) - camDist; + mDistanceToFocusObject = (rayToObject.mRatio * maxDistance) - camDist; else - mDistanceToFacedObject = -1; - return facedObject; + mDistanceToFocusObject = -1; + return focusObject; } bool World::castRenderingRay(MWPhysics::RayCastingResult& res, const osg::Vec3f& from, const osg::Vec3f& to, @@ -2997,7 +2997,7 @@ namespace MWWorld else { if (casterIsPlayer) - target = getFacedObject(); + target = getFocusObject(); if (target.isEmpty() || !target.getClass().hasToolTip(target)) { diff --git a/apps/openmw/mwworld/worldimp.hpp b/apps/openmw/mwworld/worldimp.hpp index 4b99f3c687..b5dbc19de9 100644 --- a/apps/openmw/mwworld/worldimp.hpp +++ b/apps/openmw/mwworld/worldimp.hpp @@ -121,7 +121,7 @@ namespace MWWorld float mSwimHeightScale; - float mDistanceToFacedObject; + float mDistanceToFocusObject; bool mTeleportEnabled; bool mLevitationEnabled; @@ -152,7 +152,7 @@ namespace MWWorld void preloadSpells(); - MWWorld::Ptr getFacedObject(float maxDistance, bool ignorePlayer = true); + MWWorld::Ptr getFocusObject(float maxDistance, bool ignorePlayer = true); void PCDropped(const Ptr& item); @@ -349,10 +349,10 @@ namespace MWWorld bool changeEvent = true) override; ///< @param changeEvent If false, do not trigger cell change flag or detect worldspace changes - MWWorld::Ptr getFacedObject() override; + MWWorld::Ptr getFocusObject() override; ///< Return pointer to the object the player is looking at, if it is within activation range - float getDistanceToFacedObject() override; + float getDistanceToFocusObject() override; /// @note No-op for items in containers. Use ContainerStore::removeItem instead. void deleteObject(const Ptr& ptr) override; @@ -419,7 +419,7 @@ namespace MWWorld void updatePhysics( float duration, bool paused, osg::Timer_t frameStart, unsigned int frameNumber, osg::Stats& stats); - void updateWindowManager(); + void updateFocusObject(); MWWorld::Ptr placeObject( const MWWorld::Ptr& object, float cursorX, float cursorY, int amount, bool copy = true) override; diff --git a/apps/openmw/profile.hpp b/apps/openmw/profile.hpp index da9128197c..8184c52be6 100644 --- a/apps/openmw/profile.hpp +++ b/apps/openmw/profile.hpp @@ -37,7 +37,7 @@ namespace OMW PhysicsWorker, World, Gui, - WindowManager, + Focus, Lua, Number, }; @@ -82,7 +82,7 @@ namespace OMW inline const UserStats UserStatsValue::sValue{ "LuaSync", "luasyncupdate" }; template <> - inline const UserStats UserStatsValue::sValue{ "WindowManager", "windowmanager" }; + inline const UserStats UserStatsValue::sValue{ "Focus", "focusobject" }; template struct ForEachUserStatsValue