diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index ecee8c446..8734ffaad 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -24,6 +24,7 @@ #include "mwworld/world.hpp" #include "mwworld/ptr.hpp" #include "mwworld/environment.hpp" +#include "mwworld/class.hpp" #include "mwclass/classes.hpp" @@ -74,8 +75,21 @@ bool OMW::Engine::frameStarted(const Ogre::FrameEvent& evt) if (focusFrameCounter++ == focusUpdateFrame) { std::pair handle = mEnvironment.mWorld->getMWScene()->getFacedHandle(); - - std::cout << "Object: " << handle.first << ", distance: " << handle.second << std::endl; + + std::string name; + + if (!handle.first.empty()) + { + // TODO compare handle.second with max activation range (from a GMST) + + MWWorld::Ptr ptr = mEnvironment.mWorld->getPtrViaHandle (handle.first); + + if (!ptr.isEmpty()) + name = MWWorld::Class::get (ptr).getName (ptr); + } + + if (!name.empty()) + std::cout << "Object: " << name << ", distance: " << handle.second << std::endl; focusFrameCounter = 0; } @@ -244,7 +258,7 @@ void OMW::Engine::go() *mEnvironment.mWindowManager, mDebug); focusFrameCounter = 0; - + std::cout << "\nPress Q/ESC or close window to exit.\n"; mOgre.getRoot()->addFrameListener (this); diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 5a4ac432c..73a9d6ad3 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -42,6 +42,15 @@ namespace ESMS::LiveCellRef *searchViaHandle (const std::string& handle, ESMS::CellRefList& refList) { + typedef typename ESMS::CellRefList::List::iterator iterator; + + for (iterator iter (refList.list.begin()); iter!=refList.list.end(); ++iter) + { + if (iter->mData.getHandle()==handle) + { + return &*iter; + } + } return 0; }