Created a 'buildOctreeForTheFirstTime()' function .. which adds the nodes but doesn't deal with LOD

--HG--
branch : nfb
This commit is contained in:
Kelly Fennig
2014-03-19 13:52:52 -07:00
parent b5a8c2ae93
commit a6712c250a
2 changed files with 30 additions and 1 deletions

View File

@@ -515,7 +515,6 @@ void KRScene::updateOctree(const KRViewport &viewport)
if(light) { if(light) {
m_lights.insert(light); m_lights.insert(light);
} }
} }
for(std::set<KRNode *>::iterator itr=modifiedNodes.begin(); itr != modifiedNodes.end(); itr++) { for(std::set<KRNode *>::iterator itr=modifiedNodes.begin(); itr != modifiedNodes.end(); itr++) {
KRNode *node = *itr; KRNode *node = *itr;
@@ -530,6 +529,35 @@ void KRScene::updateOctree(const KRViewport &viewport)
} }
} }
void KRScene::buildOctreeForTheFirstTime()
{
std::set<KRNode *> newNodes = std::move(m_newNodes);
m_newNodes.clear();
for(std::set<KRNode *>::iterator itr=newNodes.begin(); itr != newNodes.end(); itr++) {
KRNode *node = *itr;
m_nodeTree.add(node);
if(node->hasPhysics()) {
m_physicsNodes.insert(node);
}
KRAmbientZone *ambientZoneNode = dynamic_cast<KRAmbientZone *>(node);
if(ambientZoneNode) {
m_ambientZoneNodes.insert(ambientZoneNode);
}
KRReverbZone *reverbZoneNode = dynamic_cast<KRReverbZone *>(node);
if(reverbZoneNode) {
m_reverbZoneNodes.insert(reverbZoneNode);
}
KRLocator *locatorNode = dynamic_cast<KRLocator *>(node);
if(locatorNode) {
m_locatorNodes.insert(locatorNode);
}
KRLight *light = dynamic_cast<KRLight *>(node);
if(light) {
m_lights.insert(light);
}
}
}
void KRScene::physicsUpdate(float deltaTime) void KRScene::physicsUpdate(float deltaTime)
{ {
for(std::set<KRNode *>::iterator itr=m_physicsNodes.begin(); itr != m_physicsNodes.end(); itr++) { for(std::set<KRNode *>::iterator itr=m_physicsNodes.begin(); itr != m_physicsNodes.end(); itr++) {

View File

@@ -76,6 +76,7 @@ public:
void render(KROctreeNode *pOctreeNode, unordered_map<KRAABB, int> &visibleBounds, KRCamera *pCamera, std::vector<KRPointLight *> &point_lights, std::vector<KRDirectionalLight *> &directional_lights, std::vector<KRSpotLight *>&spot_lights, const KRViewport &viewport, KRNode::RenderPass renderPass, std::vector<KROctreeNode *> &remainingOctrees, std::vector<KROctreeNode *> &remainingOctreesTestResults, std::vector<KROctreeNode *> &remainingOctreesTestResultsOnly, bool bOcclusionResultsPass, bool bOcclusionTestResultsOnly); void render(KROctreeNode *pOctreeNode, unordered_map<KRAABB, int> &visibleBounds, KRCamera *pCamera, std::vector<KRPointLight *> &point_lights, std::vector<KRDirectionalLight *> &directional_lights, std::vector<KRSpotLight *>&spot_lights, const KRViewport &viewport, KRNode::RenderPass renderPass, std::vector<KROctreeNode *> &remainingOctrees, std::vector<KROctreeNode *> &remainingOctreesTestResults, std::vector<KROctreeNode *> &remainingOctreesTestResultsOnly, bool bOcclusionResultsPass, bool bOcclusionTestResultsOnly);
void updateOctree(const KRViewport &viewport); void updateOctree(const KRViewport &viewport);
void buildOctreeForTheFirstTime();
void notify_sceneGraphCreate(KRNode *pNode); void notify_sceneGraphCreate(KRNode *pNode);
void notify_sceneGraphDelete(KRNode *pNode); void notify_sceneGraphDelete(KRNode *pNode);