Created a 'buildOctreeForTheFirstTime()' function .. which adds the nodes but doesn't deal with LOD
--HG-- branch : nfb
This commit is contained in:
@@ -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++) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user