void CPlayerViewAttachmentMgr::CreatePVAttachments( HOBJECT hPVObject ) { ASSERT( g_pPlayerMgr->GetMoveMgr() ); ASSERT( g_pModelButeMgr ); // No need to recrete the attachments if it's just being added to the same model... if( (m_hObject == hPVObject) && !m_lstPVAttachments.empty() ) return; // Start with an empty list... RemovePVAttachments(); // Get the clients CharacterFX so we know which model we are using... CCharacterFX* pCharFX = g_pPlayerMgr->GetMoveMgr()->GetCharacterFX(); if( !pCharFX ) return; // Check how many player view attachments we need to create... ModelId eModelId = pCharFX->GetModelId(); uint8 nNumPVAttachments = g_pModelButeMgr->GetNumPlayerViewAttachments( eModelId ); if( nNumPVAttachments == 0 ) return; uint32 dwFlags = 0; g_pCommonLT->GetObjectFlags( hPVObject, OFT_Flags, dwFlags ); // It must be a player view model... if( !(dwFlags & FLAG_REALLYCLOSE) ) return; // We need to create attachments so assign the model we are attaching to... m_hObject = hPVObject; const char *pszPVAttachmentPosition = LTNULL; const char *pszPVAttachment = LTNULL; for( uint8 i = 0; i < nNumPVAttachments; ++i ) { g_pModelButeMgr->GetPlayerViewAttachment( eModelId, i, pszPVAttachmentPosition, pszPVAttachment ); CreatePVAttachment( pszPVAttachmentPosition, pszPVAttachment ); } }