MCPcopy Create free account
hub / github.com/OpenDungeons/OpenDungeons / rrDestroyTile

Method rrDestroyTile

source/render/RenderManager.cpp:598–646  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

596}
597
598void RenderManager::rrDestroyTile(Tile& tile)
599{
600 if (tile.getEntityNode() == nullptr)
601 return;
602
603 std::string tileName = tile.getOgreNamePrefix() + tile.getName();
604 std::string selectorName = tileName + "_selection_indicator";
605 if(mSceneManager->hasEntity(selectorName))
606 {
607 Ogre::SceneNode* selectorNode = mSceneManager->getSceneNode(selectorName + "Node");
608 Ogre::Entity* selectorEnt = mSceneManager->getEntity(selectorName);
609 tile.getEntityNode()->removeChild(selectorNode);
610 selectorNode->detachObject(selectorEnt);
611 mSceneManager->destroySceneNode(selectorNode);
612 mSceneManager->destroyEntity(selectorEnt);
613 }
614
615 const std::string tileMeshName = tileName + "_tileMesh";
616 if(mSceneManager->hasSceneNode(tileMeshName + "_node"))
617 {
618 Ogre::SceneNode* tileMeshNode = mSceneManager->getSceneNode(tileMeshName + "_node");
619 if(mSceneManager->hasEntity(tileMeshName))
620 {
621 Ogre::Entity* ent = mSceneManager->getEntity(tileMeshName);
622 tileMeshNode->detachObject(ent);
623 mSceneManager->destroyEntity(ent);
624 }
625 tile.getEntityNode()->removeChild(tileMeshNode);
626 mSceneManager->destroySceneNode(tileMeshNode);
627 }
628
629 const std::string customMeshName = tileName + "_customMesh";
630 if(mSceneManager->hasSceneNode(customMeshName + "_node"))
631 {
632 Ogre::SceneNode* customMeshNode = mSceneManager->getSceneNode(customMeshName + "_node");
633 if(mSceneManager->hasEntity(customMeshName))
634 {
635 Ogre::Entity* ent = mSceneManager->getEntity(customMeshName);
636 customMeshNode->detachObject(ent);
637 mSceneManager->destroyEntity(ent);
638 }
639 tile.getEntityNode()->removeChild(customMeshNode);
640 mSceneManager->destroySceneNode(customMeshNode);
641 }
642
643 mSceneManager->destroySceneNode(tile.getEntityNode());
644 tile.setParentSceneNode(nullptr);
645 tile.setEntityNode(nullptr);
646}
647
648void RenderManager::rrTemporalMarkTile(Tile* curTile)
649{

Callers 1

destroyMeshLocalMethod · 0.80

Calls 4

getEntityNodeMethod · 0.80
setParentSceneNodeMethod · 0.80
setEntityNodeMethod · 0.80
getOgreNamePrefixMethod · 0.45

Tested by

no test coverage detected