mstudioseqdesc_t &CStudioHdr::pSeqdesc( int i ) { Assert( ( i >= 0 && i < GetNumSeq() ) || ( i == 1 && GetNumSeq() <= 1 ) ); if ( i < 0 || i >= GetNumSeq() ) { if ( GetNumSeq() <= 0 ) { // Return a zero'd out struct reference if we've got nothing. // C_BaseObject::StopAnimGeneratedSounds was crashing due to this function // returning a reference to garbage. It should now see numevents is 0, // and bail. static mstudioseqdesc_t s_nil_seq; return s_nil_seq; } // Avoid reading random memory. i = 0; } if (m_pVModel == NULL) { return *m_pStudioHdr->pLocalSeqdesc( i ); } const studiohdr_t *pStudioHdr = GroupStudioHdr( m_pVModel->m_seq[i].group ); return *pStudioHdr->pLocalSeqdesc( m_pVModel->m_seq[i].index ); }
mstudioanimdesc_t &CStudioHdr::pAnimdesc( int i ) { if (m_pVModel == NULL) { return *m_pStudioHdr->pLocalAnimdesc( i ); } const studiohdr_t *pStudioHdr = GroupStudioHdr( m_pVModel->m_anim[i].group ); return *pStudioHdr->pLocalAnimdesc( m_pVModel->m_anim[i].index ); }
const studiohdr_t *CStudioHdr::pSeqStudioHdr( int sequence ) { if (m_pVModel == NULL) { return m_pStudioHdr; } const studiohdr_t *pStudioHdr = GroupStudioHdr( m_pVModel->m_seq[sequence].group ); return pStudioHdr; }
const studiohdr_t *CStudioHdr::pAnimStudioHdr( int animation ) { if (m_pVModel == NULL) { return m_pStudioHdr; } const studiohdr_t *pStudioHdr = GroupStudioHdr( m_pVModel->m_anim[animation].group ); return pStudioHdr; }
const mstudioiklock_t &CStudioHdr::pIKAutoplayLock( int i ) { if (m_pVModel == NULL) { return *m_pStudioHdr->pLocalIKAutoplayLock( i ); } const studiohdr_t *pStudioHdr = GroupStudioHdr( m_pVModel->m_iklock[i].group ); Assert( pStudioHdr ); return *pStudioHdr->pLocalIKAutoplayLock( m_pVModel->m_iklock[i].index ); }
const mstudioattachment_t &CStudioHdr::pAttachment( int i ) { if (m_pVModel == NULL) { return *m_pStudioHdr->pLocalAttachment( i ); } Assert( m_pVModel ); const studiohdr_t *pStudioHdr = GroupStudioHdr( m_pVModel->m_attachment[i].group ); return *pStudioHdr->pLocalAttachment( m_pVModel->m_attachment[i].index ); }
char *CStudioHdr::pszNodeName( int iNode ) { if (m_pVModel == NULL) { return m_pStudioHdr->pszLocalNodeName( iNode ); } if ( m_pVModel->m_node.Count() <= iNode-1 ) return "Invalid node"; const studiohdr_t *pStudioHdr = GroupStudioHdr( m_pVModel->m_node[iNode-1].group ); return pStudioHdr->pszLocalNodeName( m_pVModel->m_node[iNode-1].index ); }
const mstudioposeparamdesc_t &CStudioHdr::pPoseParameter( int i ) { if (m_pVModel == NULL) { return *m_pStudioHdr->pLocalPoseParameter( i ); } if ( m_pVModel->m_pose[i].group == 0) return *m_pStudioHdr->pLocalPoseParameter( m_pVModel->m_pose[i].index ); const studiohdr_t *pStudioHdr = GroupStudioHdr( m_pVModel->m_pose[i].group ); return *pStudioHdr->pLocalPoseParameter( m_pVModel->m_pose[i].index ); }
void CStudioHdr::SetEventListVersion( int version ) { m_pStudioHdr->eventsindexed = version; if (m_pVModel == NULL) { return; } int i; for (i = 1; i < m_pVModel->m_group.Count(); i++) { const studiohdr_t *pStudioHdr = GroupStudioHdr( i ); Assert( pStudioHdr ); pStudioHdr->eventsindexed = version; } }
void CStudioHdr::SetActivityListVersion( int version ) { m_pStudioHdr->activitylistversion = version; if (m_pVModel == NULL) { return; } int i; for (i = 1; i < m_pVModel->m_group.Count(); i++) { const studiohdr_t *pStudioHdr = GroupStudioHdr( i ); Assert( pStudioHdr ); pStudioHdr->SetActivityListVersion( version ); } }
mstudioseqdesc_t &CStudioHdr::pSeqdesc( int i ) const { Assert( i >= 0 && i < GetNumSeq() ); if ( i < 0 || i >= GetNumSeq() ) { // Avoid reading random memory. i = 0; } if (m_pVModel == NULL) { return *m_pStudioHdr->pLocalSeqdesc( i ); } const studiohdr_t *pStudioHdr = GroupStudioHdr( m_pVModel->m_seq[i].group ); return *pStudioHdr->pLocalSeqdesc( m_pVModel->m_seq[i].index ); }
int CStudioHdr::GetEventListVersion( void ) { if (m_pVModel == NULL) { return m_pStudioHdr->eventsindexed; } int version = m_pStudioHdr->eventsindexed; int i; for (i = 1; i < m_pVModel->m_group.Count(); i++) { const studiohdr_t *pStudioHdr = GroupStudioHdr( i ); Assert( pStudioHdr ); version = min( version, pStudioHdr->eventsindexed ); } return version; }
int CStudioHdr::GetActivityListVersion( void ) { if (m_pVModel == NULL) { return m_pStudioHdr->activitylistversion; } int version = m_pStudioHdr->activitylistversion; int i; for (i = 1; i < m_pVModel->m_group.Count(); i++) { const studiohdr_t *pStudioHdr = GroupStudioHdr( i ); Assert( pStudioHdr ); version = min( version, pStudioHdr->activitylistversion ); } return version; }