Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
77 lines
2.0 KiB
C++
77 lines
2.0 KiB
C++
// 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;i<m_ObjectContainer.num;i++)
|
|
{
|
|
if( strcmp(m_ObjectContainer[i]->m_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;i<m_ObjectContainer.num;i++)
|
|
{
|
|
if( strcmp(m_ObjectContainer[i]->m_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<m_ObjectContainer.num;i++)
|
|
{
|
|
ObjectNode *delNode=m_ObjectContainer[i];
|
|
delete delNode;
|
|
}
|
|
m_ObjectContainer.num=0;
|
|
}
|