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:
parent
98973426a4
commit
48e1ee3ac7
10 changed files with 41 additions and 41 deletions
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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())
|
||||||
{
|
{
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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))
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue