int CMDLMng::LinkMDLItemClass( int idxMDLClass ) { int i; mdlitemclass_t *mdlItemClass; mdlitemclasspart_t *part; int flag; mdlItemClass = &m_MDLItemClasses[idxMDLClass]; if( mdlItemClass->loaded ) return true; flag = true; part = &mdlItemClass->parts[0]; for( i = 0 ; i < mdlItemClass->numParts ; i++ , part++ ) { if( part->tagName[0] ) { if( !stricmp( part->tagName , "tag_hand" ) ) part->onlyTag = true; } part->mdlIdx = LoadMDL( part->mdlName ); if( part->mdlIdx < 0 ) { flag = false; break; } } if( flag ) CalcItemBoundBox( mdlItemClass ); mdlItemClass->loaded = flag; return flag; }
HRESULT KRLRides::DisplayDataChanged() { int nRetCode = false; HRESULT hr = E_FAIL; HRESULT hrResult = E_FAIL; int nBindCharacter = false; if (m_RenderData.HasLoadedMDL()) { hr = m_RenderData.Reset(); KGLOG_COM_PROCESS_ERROR(hr); } hr = LoadMDL(); KGLOG_COM_PROCESS_ERROR(hr); hr = LoadEquipModel(); KGLOG_COM_PROCESS_ERROR(hr); hr = LoadDefaultSocket(); KGLOG_COM_PROCESS_ERROR(hr); hr = BindCharacter(); KGLOG_COM_PROCESS_ERROR(hr); nBindCharacter = true; nRetCode = InitPlayAnimation(); KGLOG_PROCESS_ERROR(nRetCode); hrResult = S_OK; Exit0: if (FAILED(hrResult)) { if (nBindCharacter) { hr = UnbindCharacter(); KGLOG_COM_CHECK_ERROR(hr); nBindCharacter = false; } hr = m_RenderData.Reset(); KGLOG_COM_CHECK_ERROR(hr); } return hrResult; }