📄 modelmanager.cpp
字号:
// ModelManager.cpp
#include "StdAfx.h"
CModelManager::CModelManager()
{
}
CModelManager::~CModelManager()
{
list<MODEL_NODE*>::iterator begin=m_listModel.begin();
list<MODEL_NODE*>::iterator end=m_listModel.end();
for(;begin!=end; ++begin )
{
SAFE_DELETE( (*begin)->pModel );
SAFE_DELETE( (*begin) );
}
m_listModel.clear();
}
CMCModel* CModelManager::AddModelEx(short nIndex, char *szMCFileName, char *szTMFileName, char *szTexFileName, char *szAniFileName, short nSlot)
{
MODEL_NODE * pResult = this->FindNode(nIndex,nSlot);
if(pResult==NULL)
{
pResult = new MODEL_NODE;
pResult->nIndex = nIndex;
pResult->nSlot = nSlot;
pResult->pModel = new CMCModel;
if(FAILED( pResult->pModel->CreateModelEx( szMCFileName, szTMFileName, szTexFileName, szAniFileName, MODEL_EQUIP)))
{
CUtility::printf_Debug("\n[Failed] MC : %s, TM : %s, Tex : %s, Ani : %s",szMCFileName,szTMFileName,szTexFileName,szAniFileName);
SAFE_DELETE(pResult->pModel);
SAFE_DELETE(pResult);
return NULL;
}
m_listModel.push_back(pResult);
}
return pResult->pModel;
}
MODEL_NODE* CModelManager::FindNode(short nIndex, short nSlot)
{
list<MODEL_NODE*>::iterator iter;
for(iter=m_listModel.begin(); iter!=m_listModel.end(); ++iter)
{
if( (*iter)->nIndex == nIndex && (*iter)->nSlot == nSlot )
{
return (*iter);
}
}
return NULL;
}
CMCModel* CModelManager::FindModel( short nIndex, short nSlot )
{
MODEL_NODE * pNode = this->FindNode(nIndex,nSlot);
if(NULL == pNode) return NULL;
return pNode->pModel;
}
HRESULT CModelManager::Release()
{
list<MODEL_NODE*>::iterator iter;
for(iter=m_listModel.begin(); iter!=m_listModel.end(); ++iter)
{
MODEL_NODE* pModelNode = (MODEL_NODE *)*iter;
if( FAILED( pModelNode->pModel->ReleaseVertexIndex()))
return E_FAIL;
}
return S_OK;
}
HRESULT CModelManager::CreateVertexIndex()
{
list<MODEL_NODE*>::iterator iter;
for(iter=m_listModel.begin(); iter!=m_listModel.end(); ++iter)
{
MODEL_NODE* pModelNode = (MODEL_NODE *)*iter;
if( FAILED( pModelNode->pModel->CreateVertexIndexBufferEx())) // 泅犁
return E_FAIL;
for(int i=0;i<MAX_BONEANI;i++)
{
pModelNode->pModel->CreateBoundBox(i);
}
}
return S_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -