From a5058625b3b606f513647be735f68d81e5026054 Mon Sep 17 00:00:00 2001 From: gus Date: Mon, 21 Jul 2014 18:57:35 +0200 Subject: [PATCH] clean up + toggle function for the billboard --- .../view/render/pagedworldspacewidget.cpp | 24 ++++++++++++++++--- .../view/render/pagedworldspacewidget.hpp | 3 +++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/apps/opencs/view/render/pagedworldspacewidget.cpp b/apps/opencs/view/render/pagedworldspacewidget.cpp index e8a38321f..9602d9f0c 100644 --- a/apps/opencs/view/render/pagedworldspacewidget.cpp +++ b/apps/opencs/view/render/pagedworldspacewidget.cpp @@ -190,6 +190,18 @@ stop: free(buffer); buffer = 0; } +void CSVRender::PagedWorldspaceWidget::displayCellCoord(bool display) +{ + mDisplayCellCoord = display; + std::map::iterator iter(mCells.begin()); + + while (iter != mCells.end()) + { + getSceneManager()->getBillboardSet("CellBillboardSet" + iter->first.getId(mWorldspace))->setVisible(display); + iter++; + } +} + bool CSVRender::PagedWorldspaceWidget::adjustCells() { bool modified = false; @@ -210,6 +222,12 @@ bool CSVRender::PagedWorldspaceWidget::adjustCells() { delete iter->second; mCells.erase (iter++); + + getSceneManager()->getSceneNode("CellBillboardNode" + iter->first.getId(mWorldspace))->detachAllObjects(); + getSceneManager()->getBillboardSet("CellBillboardSet" + iter->first.getId(mWorldspace))->removeBillboard( + getSceneManager()->getBillboardSet("CellBillboardSet" + iter->first.getId(mWorldspace))->getBillboard(0)); + getSceneManager()->destroyBillboardSet("CellBillboardSet" + iter->first.getId(mWorldspace)); + modified = true; } else @@ -256,8 +274,6 @@ bool CSVRender::PagedWorldspaceWidget::adjustCells() { font = Ogre::FontManager::getSingletonPtr()->getByName("CellBillboardFont" + iter->getId(mWorldspace)).getPointer(); } - - //std:: Ogre::TexturePtr texture; if (Ogre::TextureManager::getSingleton().resourceExists("CellBillboardTexture" + iter->getId(mWorldspace))) @@ -294,6 +310,8 @@ bool CSVRender::PagedWorldspaceWidget::adjustCells() mySet->setRenderQueueGroup(mySet->getRenderQueueGroup() + 1); // render the bilboard on top billboardNode->attachObject(mySet); + mySet->setVisible(mDisplayCellCoord); + modified = true; } } @@ -365,7 +383,7 @@ void CSVRender::PagedWorldspaceWidget::referenceAdded (const QModelIndex& parent } CSVRender::PagedWorldspaceWidget::PagedWorldspaceWidget (QWidget* parent, CSMDoc::Document& document) -: WorldspaceWidget (document, parent), mDocument (document), mWorldspace ("std::default") +: WorldspaceWidget(document, parent), mDocument(document), mWorldspace("std::default"), mDisplayCellCoord(true) { QAbstractItemModel *cells = document.getData().getTableModel (CSMWorld::UniversalId::Type_Cells); diff --git a/apps/opencs/view/render/pagedworldspacewidget.hpp b/apps/opencs/view/render/pagedworldspacewidget.hpp index c4fb789ee..e0c1c6f54 100644 --- a/apps/opencs/view/render/pagedworldspacewidget.hpp +++ b/apps/opencs/view/render/pagedworldspacewidget.hpp @@ -18,6 +18,7 @@ namespace CSVRender CSMWorld::CellSelection mSelection; std::map mCells; std::string mWorldspace; + bool mDisplayCellCoord; private: @@ -54,6 +55,8 @@ namespace CSVRender void setCellSelection (const CSMWorld::CellSelection& selection); + void displayCellCoord(bool display); + virtual void handleDrop(const std::vector& data); virtual dropRequirments getDropRequirements(dropType type) const;