mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-03-30 09:36:43 +00:00
Factored faced object lookups into MWRender::World
* Renamed MWWorld::World::getFacedHandle to getFacedObject. * Changed it to return an object pointer * Updated clients to use return object directly.
This commit is contained in:
parent
05dad29005
commit
b9fbd6ae4b
6 changed files with 22 additions and 31 deletions
|
@ -427,12 +427,7 @@ void OMW::Engine::activate()
|
||||||
if (MWBase::Environment::get().getWindowManager()->isGuiMode())
|
if (MWBase::Environment::get().getWindowManager()->isGuiMode())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
std::string handle = MWBase::Environment::get().getWorld()->getFacedHandle();
|
MWWorld::Ptr ptr = MWBase::Environment::get().getWorld()->getFacedObject();
|
||||||
|
|
||||||
if (handle.empty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
MWWorld::Ptr ptr = MWBase::Environment::get().getWorld()->searchPtrViaHandle (handle);
|
|
||||||
|
|
||||||
if (ptr.isEmpty())
|
if (ptr.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -199,8 +199,8 @@ namespace MWBase
|
||||||
|
|
||||||
virtual void markCellAsUnchanged() = 0;
|
virtual void markCellAsUnchanged() = 0;
|
||||||
|
|
||||||
virtual std::string getFacedHandle() = 0;
|
virtual MWWorld::Ptr getFacedObject() = 0;
|
||||||
///< Return handle of the object the player is looking at
|
///< Return pointer to the object the player is looking at, if it is within activation range
|
||||||
|
|
||||||
virtual void deleteObject (const MWWorld::Ptr& ptr) = 0;
|
virtual void deleteObject (const MWWorld::Ptr& ptr) = 0;
|
||||||
|
|
||||||
|
|
|
@ -244,8 +244,7 @@ void HUD::onWorldClicked(MyGUI::Widget* _sender)
|
||||||
if ( (mode != GM_Console) && (mode != GM_Container) && (mode != GM_Inventory) )
|
if ( (mode != GM_Console) && (mode != GM_Container) && (mode != GM_Inventory) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
std::string handle = MWBase::Environment::get().getWorld()->getFacedHandle();
|
MWWorld::Ptr object = MWBase::Environment::get().getWorld()->getFacedObject();
|
||||||
MWWorld::Ptr object = MWBase::Environment::get().getWorld()->searchPtrViaHandle(handle);
|
|
||||||
|
|
||||||
if (mode == GM_Console)
|
if (mode == GM_Console)
|
||||||
MWBase::Environment::get().getWindowManager()->getConsole()->setSelectedObject(object);
|
MWBase::Environment::get().getWindowManager()->getConsole()->setSelectedObject(object);
|
||||||
|
|
|
@ -80,9 +80,8 @@ void ToolTips::onFrame(float frameDuration)
|
||||||
|| (mWindowManager->getMode() == GM_Container)
|
|| (mWindowManager->getMode() == GM_Container)
|
||||||
|| (mWindowManager->getMode() == GM_Inventory)))
|
|| (mWindowManager->getMode() == GM_Inventory)))
|
||||||
{
|
{
|
||||||
std::string handle = MWBase::Environment::get().getWorld()->getFacedHandle();
|
mFocusObject = MWBase::Environment::get().getWorld()->getFacedObject();
|
||||||
|
|
||||||
mFocusObject = MWBase::Environment::get().getWorld()->searchPtrViaHandle(handle);
|
|
||||||
if (mFocusObject.isEmpty ())
|
if (mFocusObject.isEmpty ())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -573,26 +573,24 @@ namespace MWWorld
|
||||||
return mWorldScene->markCellAsUnchanged();
|
return mWorldScene->markCellAsUnchanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string World::getFacedHandle()
|
MWWorld::Ptr World::getFacedObject()
|
||||||
{
|
{
|
||||||
|
std::pair<float, std::string> result;
|
||||||
|
|
||||||
if (!mRendering->occlusionQuerySupported())
|
if (!mRendering->occlusionQuerySupported())
|
||||||
{
|
result = mPhysics->getFacedHandle (*this, 500);
|
||||||
std::pair<float, std::string> result = mPhysics->getFacedHandle (*this, 500);
|
|
||||||
|
|
||||||
if (result.second.empty() ||
|
|
||||||
result.first>getStore().get<ESM::GameSetting>().find ("iMaxActivateDist")->getInt())
|
|
||||||
return "";
|
|
||||||
|
|
||||||
return result.second;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
result = std::make_pair (mFacedDistance, mFacedHandle);
|
||||||
if (mFacedDistance > result.first>getStore().get<ESM::GameSetting>().find ("iMaxActivateDist")->getInt())
|
|
||||||
return "";
|
|
||||||
|
|
||||||
// updated every few frames in update()
|
if (result.second.empty())
|
||||||
return mFacedHandle;
|
return MWWorld::Ptr ();
|
||||||
}
|
|
||||||
|
float ActivationDistance = getStore().get<ESM::GameSetting>().find ("iMaxActivateDist")->getInt();
|
||||||
|
|
||||||
|
if (result.first > ActivationDistance)
|
||||||
|
return MWWorld::Ptr ();
|
||||||
|
|
||||||
|
return searchPtrViaHandle (result.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
void World::deleteObject (const Ptr& ptr)
|
void World::deleteObject (const Ptr& ptr)
|
||||||
|
@ -904,7 +902,7 @@ namespace MWWorld
|
||||||
void World::updateWindowManager ()
|
void World::updateWindowManager ()
|
||||||
{
|
{
|
||||||
// inform the GUI about focused object
|
// inform the GUI about focused object
|
||||||
MWWorld::Ptr object = searchPtrViaHandle(mFacedHandle);
|
MWWorld::Ptr object = getFacedObject ();
|
||||||
|
|
||||||
MWBase::Environment::get().getWindowManager()->setFocusObject(object);
|
MWBase::Environment::get().getWindowManager()->setFocusObject(object);
|
||||||
|
|
||||||
|
|
|
@ -227,8 +227,8 @@ namespace MWWorld
|
||||||
|
|
||||||
virtual void markCellAsUnchanged();
|
virtual void markCellAsUnchanged();
|
||||||
|
|
||||||
virtual std::string getFacedHandle();
|
virtual MWWorld::Ptr getFacedObject();
|
||||||
///< Return handle of the object the player is looking at
|
///< Return pointer to the object the player is looking at, if it is within activation range
|
||||||
|
|
||||||
virtual void deleteObject (const Ptr& ptr);
|
virtual void deleteObject (const Ptr& ptr);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue