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>
86 lines
2.0 KiB
C++
86 lines
2.0 KiB
C++
// MeshObjectContainer.cpp: implementation of the CMeshObjectContainer class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "MeshObjectContainer.h"
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Construction/Destruction
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
//List<CMeshObjectContainer::MeshObjectNode*> CMeshObjectContainer::m_MeshContainer;
|
|
|
|
CMeshObjectContainer::CMeshObjectContainer()
|
|
{
|
|
|
|
}
|
|
|
|
CMeshObjectContainer::~CMeshObjectContainer()
|
|
{
|
|
DeleteAllObject();
|
|
}
|
|
|
|
void CMeshObjectContainer::Load(char *strMeshName)
|
|
{
|
|
CMeshObject *pMeshObject=new CMeshObject();
|
|
char strPathAndFilename[MAX_NAMEBUFFER];
|
|
strcpy(strPathAndFilename,m_strObjectPathName);
|
|
strcat(strPathAndFilename,strMeshName);
|
|
CTexture::SetPath(OBJECTTEXTUREPATH);
|
|
pMeshObject->Load(strPathAndFilename);
|
|
pMeshObject->TextureLoad();
|
|
if(pMeshObject->m_bCompleteMesh==false)
|
|
{
|
|
pMeshObject->m_dwShader=MultiFVF;
|
|
pMeshObject->CalcBox();
|
|
}
|
|
MeshObjectNode *AddNode=new MeshObjectNode(pMeshObject,strMeshName);
|
|
m_MeshContainer.Add(AddNode);
|
|
}
|
|
|
|
CMeshObject* CMeshObjectContainer::GetMeshObject(char *strMeshName)
|
|
{
|
|
for(int i=0;i<m_MeshContainer.num;i++)
|
|
{
|
|
if(strcmp(m_MeshContainer[i]->m_strMeshName,strMeshName)==0)
|
|
{
|
|
m_MeshContainer[i]->m_nUsed++;
|
|
return m_MeshContainer[i]->m_MeshObject;
|
|
}
|
|
}
|
|
Load(strMeshName);
|
|
return m_MeshContainer[i]->m_MeshObject;
|
|
}
|
|
|
|
void CMeshObjectContainer::DeleteMeshObject(char *strMeshObject)
|
|
{
|
|
if(strcmp(strMeshObject,"")==0)
|
|
return;
|
|
for(int i=0;i<m_MeshContainer.num;i++)
|
|
{
|
|
if(strcmp(m_MeshContainer[i]->m_strMeshName,strMeshObject)==0)
|
|
{
|
|
if(--m_MeshContainer[i]->m_nUsed==0)
|
|
{
|
|
//MessageBox(NULL,strMeshObject,0,0);
|
|
MeshObjectNode *delNode=m_MeshContainer[i];
|
|
m_MeshContainer.DelIndex(i);
|
|
delete delNode;
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
void CMeshObjectContainer::DeleteAllObject()
|
|
{
|
|
for(int i=0;i<m_MeshContainer.num;i++)
|
|
{
|
|
MeshObjectNode *delNode=m_MeshContainer[i];
|
|
delete delNode;
|
|
}
|
|
m_MeshContainer.num=0;
|
|
}
|