示例#1
0
文件: octree.cpp 项目: monthero/nau
void 
Octree::_place (nau::scene::SceneObject *aSceneObject)
{
	static std::list<nau::scene::OctreeNode*> tmpVector;
	static int octant = 0;

	OctreeNode* aNode = reinterpret_cast<OctreeNode*> (aSceneObject);

	if (0 == m_pOctreeRootNode) {
		m_pOctreeRootNode = aNode;
		tmpVector.push_back (m_pOctreeRootNode);
		return;
	}

	if (aNode->m_NodeId < octant) {
		tmpVector.pop_front();
	}

	OctreeNode* currentNode = *(tmpVector.begin());
	octant = aNode->m_NodeId;

	currentNode->_setChild(octant, aNode);
	if (aNode->_getChildCount() > 0) {
		tmpVector.push_back (aNode);
	}
	
}