diff --git a/apps/openmw/mwworld/cellref.cpp b/apps/openmw/mwworld/cellref.cpp index fb9fd592a..188a80ae1 100644 --- a/apps/openmw/mwworld/cellref.cpp +++ b/apps/openmw/mwworld/cellref.cpp @@ -25,6 +25,11 @@ namespace MWWorld return mCellRef.mRefID; } + const std::string* CellRef::getRefIdPtr() const + { + return &mCellRef.mRefID; + } + bool CellRef::getTeleport() const { return mCellRef.mTeleport; diff --git a/apps/openmw/mwworld/cellref.hpp b/apps/openmw/mwworld/cellref.hpp index 04e807ce5..f9f6dbdda 100644 --- a/apps/openmw/mwworld/cellref.hpp +++ b/apps/openmw/mwworld/cellref.hpp @@ -34,6 +34,9 @@ namespace MWWorld // Id of object being referenced std::string getRefId() const; + // Pointer to ID of the object being referenced + const std::string* getRefIdPtr() const; + // For doors - true if this door teleports to somewhere else, false // if it should open through animation. bool getTeleport() const; diff --git a/apps/openmw/mwworld/cellstore.cpp b/apps/openmw/mwworld/cellstore.cpp index 3d9c24009..607551f7d 100644 --- a/apps/openmw/mwworld/cellstore.cpp +++ b/apps/openmw/mwworld/cellstore.cpp @@ -137,7 +137,7 @@ namespace { for (typename MWWorld::CellRefList::List::iterator iter (collection.mList.begin()); iter!=collection.mList.end(); ++iter) - if (iter->mRef.getRefNum()==state.mRef.mRefNum && iter->mRef.getRefId() == state.mRef.mRefID) + if (iter->mRef.getRefNum()==state.mRef.mRefNum && *iter->mRef.getRefIdPtr() == state.mRef.mRefID) { // overwrite existing reference iter->load (state); @@ -390,7 +390,7 @@ namespace MWWorld const std::string *mIdToFind; bool operator()(const PtrType& ptr) { - if (ptr.getCellRef().getRefId() == *mIdToFind) + if (*ptr.getCellRef().getRefIdPtr() == *mIdToFind) { mFound = ptr; return false;