1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-10-17 23:16:38 +00:00

Unify focus object terminology

This commit is contained in:
Andrei Kortunov 2025-10-11 12:54:07 +04:00
parent 98973426a4
commit 48e1ee3ac7
10 changed files with 41 additions and 41 deletions

View file

@ -342,10 +342,10 @@ bool OMW::Engine::frame(unsigned frameNumber, float frametime)
mViewer->eventTraversal(); mViewer->eventTraversal();
mViewer->updateTraversal(); mViewer->updateTraversal();
// update GUI by world data // update focus object for GUI
{ {
ScopedProfile<UserStatsType::WindowManager> profile(frameStart, frameNumber, *timer, *stats); ScopedProfile<UserStatsType::Focus> profile(frameStart, frameNumber, *timer, *stats);
mWorld->updateWindowManager(); mWorld->updateFocusObject();
} }
// if there is a separate Lua thread, it starts the update now // if there is a separate Lua thread, it starts the update now

View file

@ -257,10 +257,10 @@ namespace MWBase
= 0; = 0;
///< @param changeEvent If false, do not trigger cell change flag or detect worldspace changes ///< @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 ///< 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; virtual float getMaxActivationDistance() const = 0;

View file

@ -124,7 +124,7 @@ namespace MWClass
// make door glow if player activates it with telekinesis // make door glow if player activates it with telekinesis
if (actor == MWMechanics::getPlayer() if (actor == MWMechanics::getPlayer()
&& MWBase::Environment::get().getWorld()->getDistanceToFacedObject() && MWBase::Environment::get().getWorld()->getDistanceToFocusObject()
> MWBase::Environment::get().getWorld()->getMaxActivationDistance()) > MWBase::Environment::get().getWorld()->getMaxActivationDistance())
{ {
MWRender::Animation* animation = MWBase::Environment::get().getWorld()->getAnimation(ptr); MWRender::Animation* animation = MWBase::Environment::get().getWorld()->getAnimation(ptr);
@ -184,7 +184,7 @@ namespace MWClass
if (ptr.getCellRef().getTeleport()) if (ptr.getCellRef().getTeleport())
{ {
if (actor == MWMechanics::getPlayer() if (actor == MWMechanics::getPlayer()
&& MWBase::Environment::get().getWorld()->getDistanceToFacedObject() && MWBase::Environment::get().getWorld()->getDistanceToFocusObject()
> MWBase::Environment::get().getWorld()->getMaxActivationDistance()) > MWBase::Environment::get().getWorld()->getMaxActivationDistance())
{ {
// player activated teleport door with telekinesis // player activated teleport door with telekinesis

View file

@ -225,7 +225,7 @@ namespace MWGui
if (!winMgr->isConsoleMode() && (mode != GM_Container) && (mode != GM_Inventory)) if (!winMgr->isConsoleMode() && (mode != GM_Container) && (mode != GM_Inventory))
return; return;
MWWorld::Ptr object = MWBase::Environment::get().getWorld()->getFacedObject(); MWWorld::Ptr object = MWBase::Environment::get().getWorld()->getFocusObject();
if (winMgr->isConsoleMode()) if (winMgr->isConsoleMode())
winMgr->setConsoleSelectedObject(object); winMgr->setConsoleSelectedObject(object);

View file

@ -1745,7 +1745,7 @@ namespace MWMechanics
{ {
// TODO: this will only work for the player, and needs to be fixed if NPCs should ever use // TODO: this will only work for the player, and needs to be fixed if NPCs should ever use
// lockpicks/probes. // lockpicks/probes.
MWWorld::Ptr target = world->getFacedObject(); MWWorld::Ptr target = world->getFocusObject();
if (!target.isEmpty()) if (!target.isEmpty())
{ {

View file

@ -18,7 +18,7 @@ namespace MWWorld
// Using activation distance as the trap range. // Using activation distance as the trap range.
if (actor == MWBase::Environment::get().getWorld()->getPlayerPtr() 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 > trapRange) // player activated object outside range of trap
{ {
MWMechanics::CastSpell cast(mTrapSource, mTrapSource); MWMechanics::CastSpell cast(mTrapSource, mTrapSource);

View file

@ -193,7 +193,7 @@ namespace MWWorld
if (playerStats.isParalyzed() || playerStats.getKnockedDown() || playerStats.isDead()) if (playerStats.isParalyzed() || playerStats.getKnockedDown() || playerStats.isDead())
return; return;
MWWorld::Ptr toActivate = MWBase::Environment::get().getWorld()->getFacedObject(); MWWorld::Ptr toActivate = MWBase::Environment::get().getWorld()->getFocusObject();
if (toActivate.isEmpty()) if (toActivate.isEmpty())
return; return;

View file

@ -261,7 +261,7 @@ namespace MWWorld
, mActivationDistanceOverride(activationDistanceOverride) , mActivationDistanceOverride(activationDistanceOverride)
, mStartCell(startCell) , mStartCell(startCell)
, mSwimHeightScale(0.f) , mSwimHeightScale(0.f)
, mDistanceToFacedObject(-1.f) , mDistanceToFocusObject(-1.f)
, mTeleportEnabled(true) , mTeleportEnabled(true)
, mLevitationEnabled(true) , mLevitationEnabled(true)
, mGoToJail(false) , mGoToJail(false)
@ -999,33 +999,33 @@ namespace MWWorld
return static_cast<float>(iMaxActivateDist); return static_cast<float>(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) if (MWBase::Environment::get().getStateManager()->getState() == MWBase::StateManager::State_NoGame)
return facedObject; return focusObject;
if (MWBase::Environment::get().getWindowManager()->isGuiMode() if (MWBase::Environment::get().getWindowManager()->isGuiMode()
&& MWBase::Environment::get().getWindowManager()->isConsoleMode()) && MWBase::Environment::get().getWindowManager()->isConsoleMode())
facedObject = getFacedObject(getMaxActivationDistance() * 50, false); focusObject = getFocusObject(getMaxActivationDistance() * 50, false);
else else
{ {
float activationDistance = getActivationDistancePlusTelekinesis(); float activationDistance = getActivationDistancePlusTelekinesis();
facedObject = getFacedObject(activationDistance, true); focusObject = getFocusObject(activationDistance, true);
if (!facedObject.isEmpty() && !facedObject.getClass().allowTelekinesis(facedObject) if (!focusObject.isEmpty() && !focusObject.getClass().allowTelekinesis(focusObject)
&& mDistanceToFacedObject > getMaxActivationDistance() && mDistanceToFocusObject > getMaxActivationDistance()
&& !MWBase::Environment::get().getWindowManager()->isGuiMode()) && !MWBase::Environment::get().getWindowManager()->isGuiMode())
return nullptr; 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 osg::Matrixf World::getActorHeadTransform(const MWWorld::ConstPtr& actor) const
@ -1772,12 +1772,12 @@ namespace MWWorld
MWBase::Environment::get().getSoundManager()->setListenerPosDir(listenerPos, forward, up, underwater); MWBase::Environment::get().getSoundManager()->setListenerPosDir(listenerPos, forward, up, underwater);
} }
void World::updateWindowManager() void World::updateFocusObject()
{ {
try try
{ {
// inform the GUI about focused object // 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 // retrieve the object's top point's screen position so we know where to place the floating label
if (!object.isEmpty()) if (!object.isEmpty())
@ -1798,15 +1798,15 @@ namespace MWWorld
} }
catch (std::exception& e) 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(); const float camDist = mRendering->getCamera()->getCameraDistance();
maxDistance += camDist; maxDistance += camDist;
MWWorld::Ptr facedObject; MWWorld::Ptr focusObject;
MWRender::RenderingManager::RayResult rayToObject; MWRender::RenderingManager::RayResult rayToObject;
if (MWBase::Environment::get().getWindowManager()->isGuiMode()) if (MWBase::Environment::get().getWindowManager()->isGuiMode())
@ -1818,14 +1818,14 @@ namespace MWWorld
else else
rayToObject = mRendering->castCameraToViewportRay(0.5f, 0.5f, maxDistance, ignorePlayer); rayToObject = mRendering->castCameraToViewportRay(0.5f, 0.5f, maxDistance, ignorePlayer);
facedObject = rayToObject.mHitObject; focusObject = rayToObject.mHitObject;
if (facedObject.isEmpty() && rayToObject.mHitRefnum.isSet()) if (focusObject.isEmpty() && rayToObject.mHitRefnum.isSet())
facedObject = MWBase::Environment::get().getWorldModel()->getPtr(rayToObject.mHitRefnum); focusObject = MWBase::Environment::get().getWorldModel()->getPtr(rayToObject.mHitRefnum);
if (rayToObject.mHit) if (rayToObject.mHit)
mDistanceToFacedObject = (rayToObject.mRatio * maxDistance) - camDist; mDistanceToFocusObject = (rayToObject.mRatio * maxDistance) - camDist;
else else
mDistanceToFacedObject = -1; mDistanceToFocusObject = -1;
return facedObject; return focusObject;
} }
bool World::castRenderingRay(MWPhysics::RayCastingResult& res, const osg::Vec3f& from, const osg::Vec3f& to, bool World::castRenderingRay(MWPhysics::RayCastingResult& res, const osg::Vec3f& from, const osg::Vec3f& to,
@ -2997,7 +2997,7 @@ namespace MWWorld
else else
{ {
if (casterIsPlayer) if (casterIsPlayer)
target = getFacedObject(); target = getFocusObject();
if (target.isEmpty() || !target.getClass().hasToolTip(target)) if (target.isEmpty() || !target.getClass().hasToolTip(target))
{ {

View file

@ -121,7 +121,7 @@ namespace MWWorld
float mSwimHeightScale; float mSwimHeightScale;
float mDistanceToFacedObject; float mDistanceToFocusObject;
bool mTeleportEnabled; bool mTeleportEnabled;
bool mLevitationEnabled; bool mLevitationEnabled;
@ -152,7 +152,7 @@ namespace MWWorld
void preloadSpells(); void preloadSpells();
MWWorld::Ptr getFacedObject(float maxDistance, bool ignorePlayer = true); MWWorld::Ptr getFocusObject(float maxDistance, bool ignorePlayer = true);
void PCDropped(const Ptr& item); void PCDropped(const Ptr& item);
@ -349,10 +349,10 @@ namespace MWWorld
bool changeEvent = true) override; bool changeEvent = true) override;
///< @param changeEvent If false, do not trigger cell change flag or detect worldspace changes ///< @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 ///< 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. /// @note No-op for items in containers. Use ContainerStore::removeItem instead.
void deleteObject(const Ptr& ptr) override; void deleteObject(const Ptr& ptr) override;
@ -419,7 +419,7 @@ namespace MWWorld
void updatePhysics( void updatePhysics(
float duration, bool paused, osg::Timer_t frameStart, unsigned int frameNumber, osg::Stats& stats); float duration, bool paused, osg::Timer_t frameStart, unsigned int frameNumber, osg::Stats& stats);
void updateWindowManager(); void updateFocusObject();
MWWorld::Ptr placeObject( MWWorld::Ptr placeObject(
const MWWorld::Ptr& object, float cursorX, float cursorY, int amount, bool copy = true) override; const MWWorld::Ptr& object, float cursorX, float cursorY, int amount, bool copy = true) override;

View file

@ -37,7 +37,7 @@ namespace OMW
PhysicsWorker, PhysicsWorker,
World, World,
Gui, Gui,
WindowManager, Focus,
Lua, Lua,
Number, Number,
}; };
@ -82,7 +82,7 @@ namespace OMW
inline const UserStats UserStatsValue<UserStatsType::LuaSyncUpdate>::sValue{ "LuaSync", "luasyncupdate" }; inline const UserStats UserStatsValue<UserStatsType::LuaSyncUpdate>::sValue{ "LuaSync", "luasyncupdate" };
template <> template <>
inline const UserStats UserStatsValue<UserStatsType::WindowManager>::sValue{ "WindowManager", "windowmanager" }; inline const UserStats UserStatsValue<UserStatsType::Focus>::sValue{ "Focus", "focusobject" };
template <UserStatsType type> template <UserStatsType type>
struct ForEachUserStatsValue struct ForEachUserStatsValue