diff --git a/KREngine/kraken/KRScene.cpp b/KREngine/kraken/KRScene.cpp index 646debc..5e31dce 100644 --- a/KREngine/kraken/KRScene.cpp +++ b/KREngine/kraken/KRScene.cpp @@ -93,6 +93,11 @@ std::set &KRScene::getReverbZones() return m_reverbZoneNodes; } +std::set &KRScene::getLocators() +{ + return m_locatorNodes; +} + void KRScene::render(KRCamera *pCamera, unordered_map &visibleBounds, const KRViewport &viewport, KRNode::RenderPass renderPass, bool new_frame) { if(new_frame) { // Expire cached occlusion test results. @@ -460,6 +465,10 @@ void KRScene::notify_sceneGraphDelete(KRNode *pNode) if(ReverbZoneNode) { m_reverbZoneNodes.erase(ReverbZoneNode); } + KRLocator *locator = dynamic_cast(pNode); + if(locator) { + m_locatorNodes.erase(locator); + } m_modifiedNodes.erase(pNode); if(!m_newNodes.erase(pNode)) { m_nodeTree.remove(pNode); @@ -481,14 +490,19 @@ void KRScene::updateOctree(const KRViewport &viewport) if(node->hasPhysics()) { m_physicsNodes.insert(node); } - KRAmbientZone *AmbientZoneNode = dynamic_cast(node); - if(dynamic_cast(node)) { - m_ambientZoneNodes.insert(AmbientZoneNode); + KRAmbientZone *ambientZoneNode = dynamic_cast(node); + if(ambientZoneNode) { + m_ambientZoneNodes.insert(ambientZoneNode); } - KRReverbZone *ReverbZoneNode = dynamic_cast(node); - if(dynamic_cast(node)) { - m_reverbZoneNodes.insert(ReverbZoneNode); + KRReverbZone *reverbZoneNode = dynamic_cast(node); + if(reverbZoneNode) { + m_reverbZoneNodes.insert(reverbZoneNode); } + KRLocator *locatorNode = dynamic_cast(node); + if(locatorNode) { + m_locatorNodes.insert(locatorNode); + } + } for(std::set::iterator itr=modifiedNodes.begin(); itr != modifiedNodes.end(); itr++) { KRNode *node = *itr; diff --git a/KREngine/kraken/KRScene.h b/KREngine/kraken/KRScene.h index b8f5cab..9242a03 100644 --- a/KREngine/kraken/KRScene.h +++ b/KREngine/kraken/KRScene.h @@ -40,6 +40,7 @@ #include "KRCamera.h" #include "KRMeshManager.h" #include "KRNode.h" +#include "KRLocator.h" #include "KRAmbientZone.h" #include "KRReverbZone.h" #include "KROctree.h" @@ -84,6 +85,7 @@ public: std::set &getAmbientZones(); std::set &getReverbZones(); + std::set &getLocators(); private: @@ -98,6 +100,7 @@ private: std::set m_physicsNodes; std::set m_ambientZoneNodes; std::set m_reverbZoneNodes; + std::set m_locatorNodes; KROctree m_nodeTree;