mirror of
https://github.com/OpenMW/openmw.git
synced 2025-10-16 10:16:33 +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->updateTraversal();
|
||||
|
||||
// update GUI by world data
|
||||
// update focus object for GUI
|
||||
{
|
||||
ScopedProfile<UserStatsType::WindowManager> profile(frameStart, frameNumber, *timer, *stats);
|
||||
mWorld->updateWindowManager();
|
||||
ScopedProfile<UserStatsType::Focus> profile(frameStart, frameNumber, *timer, *stats);
|
||||
mWorld->updateFocusObject();
|
||||
}
|
||||
|
||||
// if there is a separate Lua thread, it starts the update now
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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())
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<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)
|
||||
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))
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -37,7 +37,7 @@ namespace OMW
|
|||
PhysicsWorker,
|
||||
World,
|
||||
Gui,
|
||||
WindowManager,
|
||||
Focus,
|
||||
Lua,
|
||||
Number,
|
||||
};
|
||||
|
@ -82,7 +82,7 @@ namespace OMW
|
|||
inline const UserStats UserStatsValue<UserStatsType::LuaSyncUpdate>::sValue{ "LuaSync", "luasyncupdate" };
|
||||
|
||||
template <>
|
||||
inline const UserStats UserStatsValue<UserStatsType::WindowManager>::sValue{ "WindowManager", "windowmanager" };
|
||||
inline const UserStats UserStatsValue<UserStatsType::Focus>::sValue{ "Focus", "focusobject" };
|
||||
|
||||
template <UserStatsType type>
|
||||
struct ForEachUserStatsValue
|
||||
|
|
Loading…
Reference in a new issue