diff options
Diffstat (limited to 'apps/opencs/view/render/cell.cpp')
-rw-r--r-- | apps/opencs/view/render/cell.cpp | 50 |
1 files changed, 22 insertions, 28 deletions
diff --git a/apps/opencs/view/render/cell.cpp b/apps/opencs/view/render/cell.cpp index 3395e90e11..418bcee696 100644 --- a/apps/opencs/view/render/cell.cpp +++ b/apps/opencs/view/render/cell.cpp @@ -1,9 +1,9 @@ #include "cell.hpp" #include <osg/PositionAttitudeTransform> -#include <osg/Geode> #include <osg/Group> +#include <memory> #include <components/misc/stringops.hpp> #include <components/esm3/loadcell.hpp> #include <components/esm3/loadland.hpp> @@ -43,7 +43,7 @@ namespace CSVRender void operator()(osg::Node* node, osg::NodeVisitor* nv) override { traverse(node, nv); - CellNodeContainer* container = static_cast<CellNodeContainer*>(node->getUserData()); + auto* container = dynamic_cast<CellNodeContainer*>(node->getUserData()); container->getCell()->updateLand(); } }; @@ -51,8 +51,7 @@ namespace CSVRender bool CSVRender::Cell::removeObject (const std::string& id) { - std::map<std::string, Object *>::iterator iter = - mObjects.find (Misc::StringUtils::lowerCase (id)); + auto iter = mObjects.find (Misc::StringUtils::lowerCase (id)); if (iter==mObjects.end()) return false; @@ -193,9 +192,8 @@ CSVRender::Cell::Cell (CSMWorld::Data& data, osg::Group* rootNode, const std::st CSVRender::Cell::~Cell() { - for (std::map<std::string, Object *>::iterator iter (mObjects.begin()); - iter!=mObjects.end(); ++iter) - delete iter->second; + for (auto & mObject : mObjects) + delete mObject.second; mCellNode->getParent(0)->removeChild(mCellNode); } @@ -210,9 +208,8 @@ bool CSVRender::Cell::referenceableDataChanged (const QModelIndex& topLeft, { bool modified = false; - for (std::map<std::string, Object *>::iterator iter (mObjects.begin()); - iter!=mObjects.end(); ++iter) - if (iter->second->referenceableDataChanged (topLeft, bottomRight)) + for (auto & mObject : mObjects) + if (mObject.second->referenceableDataChanged (topLeft, bottomRight)) modified = true; return modified; @@ -226,9 +223,8 @@ bool CSVRender::Cell::referenceableAboutToBeRemoved (const QModelIndex& parent, bool modified = false; - for (std::map<std::string, Object *>::iterator iter (mObjects.begin()); - iter!=mObjects.end(); ++iter) - if (iter->second->referenceableAboutToBeRemoved (parent, start, end)) + for (auto & mObject : mObjects) + if (mObject.second->referenceableAboutToBeRemoved (parent, start, end)) modified = true; return modified; @@ -269,13 +265,13 @@ bool CSVRender::Cell::referenceDataChanged (const QModelIndex& topLeft, // perform update and remove where needed bool modified = false; - std::map<std::string, Object *>::iterator iter = mObjects.begin(); + auto iter = mObjects.begin(); while (iter!=mObjects.end()) { if (iter->second->referenceDataChanged (topLeft, bottomRight)) modified = true; - std::map<std::string, bool>::iterator iter2 = ids.find (iter->first); + auto iter2 = ids.find (iter->first); if (iter2!=ids.end()) { @@ -294,12 +290,12 @@ bool CSVRender::Cell::referenceDataChanged (const QModelIndex& topLeft, } // add new objects - for (std::map<std::string, bool>::iterator mapIter (ids.begin()); mapIter!=ids.end(); ++mapIter) + for (auto & id : ids) { - if (!mapIter->second) + if (!id.second) { mObjects.insert (std::make_pair ( - mapIter->first, new Object (mData, mCellNode, mapIter->first, false))); + id.first, new Object (mData, mCellNode, id.first, false))); modified = true; } @@ -539,11 +535,11 @@ void CSVRender::Cell::setCellArrows (int mask) { for (int i=0; i<4; ++i) { - CellArrow::Direction direction = static_cast<CellArrow::Direction> (1<<i); + auto direction = static_cast<CellArrow::Direction> (1<<i); bool enable = mask & direction; - if (enable!=(mCellArrows[i].get()!=nullptr)) + if (enable!=(mCellArrows[i]!=nullptr)) { if (enable) mCellArrows[i] = std::make_unique<CellArrow>(mCellNode, direction, mCoordinates); @@ -586,10 +582,9 @@ std::vector<osg::ref_ptr<CSVRender::TagBase> > CSVRender::Cell::getSelection (un std::vector<osg::ref_ptr<TagBase> > result; if (elementMask & Mask_Reference) - for (std::map<std::string, Object *>::const_iterator iter (mObjects.begin()); - iter!=mObjects.end(); ++iter) - if (iter->second->getSelected()) - result.push_back (iter->second->getTag()); + for (const auto & mObject : mObjects) + if (mObject.second->getSelected()) + result.push_back (mObject.second->getTag()); if (mPathgrid && elementMask & Mask_Pathgrid) if (mPathgrid->isSelected()) result.emplace_back(mPathgrid->getTag()); @@ -602,10 +597,9 @@ std::vector<osg::ref_ptr<CSVRender::TagBase> > CSVRender::Cell::getEdited (unsig std::vector<osg::ref_ptr<TagBase> > result; if (elementMask & Mask_Reference) - for (std::map<std::string, Object *>::const_iterator iter (mObjects.begin()); - iter!=mObjects.end(); ++iter) - if (iter->second->isEdited()) - result.push_back (iter->second->getTag()); + for (const auto & mObject : mObjects) + if (mObject.second->isEdited()) + result.push_back (mObject.second->getTag()); return result; } |