// OctreeContainer.cpp: implementation of the COctreeContainer class. // ////////////////////////////////////////////////////////////////////// #include "OctreeContainer.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// COctreeContainer::COctreeContainer() { strcpy(m_OctreePath,OCTREEPATH); } COctreeContainer::~COctreeContainer() { DeleteAllObject(); } COctreeScene* COctreeContainer::GetOctree(char *strOctreeName) { for(int cOctree=0;cOctreem_strOctreeName,strOctreeName)==0) { m_OctreeContainer[cOctree]->m_Used++; return m_OctreeContainer[cOctree]->m_pOctree; } } char strPathFile[MAX_NAMEBUFFER]; sprintf(strPathFile,"%s\\%s",OCTREEPATH,strOctreeName); FILE *fp=fopen(strPathFile,"rb"); if(fp==NULL) return NULL; COctreeScene *pOctree=new COctreeScene(); pOctree->Load(fp); fclose(fp); OctreeNode *AddNode=new OctreeNode(strOctreeName,pOctree); m_OctreeContainer.Add(AddNode); return pOctree; } void COctreeContainer::DeleteOctree(char *strOctreeName) { for(int cOctree=0;cOctreem_strOctreeName,strOctreeName)==0 && --m_OctreeContainer[cOctree]->m_Used==0) { //delete m_OctreeContainer[cOctree]->m_pOctree; delete m_OctreeContainer[cOctree]; m_OctreeContainer.DelIndex(cOctree); } } } void COctreeContainer::DeleteAllObject() { for(int cOctree=0;cOctreem_pOctree; delete m_OctreeContainer[cOctree]; } m_OctreeContainer.num=0; }