Initial commit: ROW Client source code
Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
87
Engine/Zalla3D Scene Class/MeshObjectContainer.cpp
Normal file
87
Engine/Zalla3D Scene Class/MeshObjectContainer.cpp
Normal file
@@ -0,0 +1,87 @@
|
||||
// MeshObjectContainer.cpp: implementation of the CMeshObjectContainer class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "MeshObjectContainer.h"
|
||||
#include "GMMemory.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.push_back(AddNode);
|
||||
}
|
||||
|
||||
CMeshObject* CMeshObjectContainer::GetMeshObject(char *strMeshName)
|
||||
{
|
||||
int i=0;
|
||||
for(;i<(int)m_MeshContainer.size();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<(int)m_MeshContainer.size();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.erase(m_MeshContainer.begin()+i);
|
||||
delete delNode;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CMeshObjectContainer::DeleteAllObject()
|
||||
{
|
||||
for(int i=0;i<(int)m_MeshContainer.size();i++)
|
||||
{
|
||||
MeshObjectNode *delNode=m_MeshContainer[i];
|
||||
delete delNode;
|
||||
}
|
||||
m_MeshContainer.clear();
|
||||
}
|
||||
Reference in New Issue
Block a user