// ObjectContainer.cpp: implementation of the CObjectContainer class. // ////////////////////////////////////////////////////////////////////// #include "ObjectContainer.h" #include "SceneManager.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CObjectContainer::CObjectContainer() { } CObjectContainer::~CObjectContainer() { DeleteAllObject(); } CMeshObject* CObjectContainer::GetObject(char *strObjectName, bool isAlpha, bool isLight) { for(int i=0;im_strObjectName,strObjectName)==0 ) //&& m_ObjectContainer[i]->m_isAlpha == isAlpha &&m_ObjectContainer[i]->m_isLight == isLight) { m_ObjectContainer[i]->m_nUsed++; return m_ObjectContainer[i]->m_pObject; } } Load(strObjectName,isAlpha,isLight); return m_ObjectContainer[i]->m_pObject; } void CObjectContainer::Load(char *strObjectName,bool isAlpha,bool isLight) { CSceneManager::m_MeshObjectContainer.SetPath(OBJECTPATH); CMeshObject *pObject=NULL; pObject=CSceneManager::m_MeshObjectContainer.GetMeshObject(strObjectName); pObject->ConvertNormal(); ObjectNode *AddNode=new ObjectNode(pObject,strObjectName,isAlpha,isLight); m_ObjectContainer.Add(AddNode); } void CObjectContainer::DeleteObject(char *strObjectName, bool isAlpha, bool isLight) { for(int i=0;im_strObjectName,strObjectName)==0 && m_ObjectContainer[i]->m_isAlpha==isAlpha && m_ObjectContainer[i]->m_isLight==isLight) { if(--m_ObjectContainer[i]->m_nUsed==0) { ObjectNode *delNode=m_ObjectContainer[i]; CSceneManager::m_MeshObjectContainer.DeleteMeshObject(delNode->m_strObjectName); delete delNode; m_ObjectContainer.DelIndex(i); } return; } } } void CObjectContainer::DeleteAllObject() { for(int i=0;i