void CAnimating::ResetSequenceInfo() { if (GetSequence() == -1) { // This shouldn't happen. Setting m_nSequence blindly is a horrible coding practice. SetSequence( 0 ); } CStudioHdr *pStudioHdr = GetModelPtr(); m_flGroundSpeed = GetSequenceGroundSpeed( pStudioHdr, GetSequence() ); m_bSequenceLoops = ((GetSequenceFlags( pStudioHdr, GetSequence() ) & STUDIO_LOOPING) != 0); // m_flAnimTime = gpGlobals->time; m_flPlaybackRate = 1.0; m_bSequenceFinished = false; m_flLastEventCheck = 0; m_nNewSequenceParity = ( *(m_nNewSequenceParity)+1 ) & EF_PARITY_MASK; m_nResetEventsParity = ( *(m_nResetEventsParity)+1 ) & EF_PARITY_MASK; // FIXME: why is this called here? Nothing should have changed to make this nessesary if ( pStudioHdr ) { SetEventIndexForSequence( pStudioHdr->pSeqdesc( GetSequence() ) ); } }
mstudioevent_t *GetEventIndexForSequence( mstudioseqdesc_t &seqdesc ) { if (!(seqdesc.flags & STUDIO_EVENT)) { SetEventIndexForSequence( seqdesc ); } return seqdesc.pEvent( 0 ); }
mstudioevent_for_client_server_t *GetEventIndexForSequence( mstudioseqdesc_t &seqdesc ) { #ifndef CLIENT_DLL if ( !(seqdesc.flags & STUDIO_EVENT) ) #else if ( !(seqdesc.flags & STUDIO_EVENT_CLIENT) ) #endif { SetEventIndexForSequence( seqdesc ); } return (mstudioevent_for_client_server_t*)seqdesc.pEvent( 0 ); }
void BuildAllAnimationEventIndexes( CStudioHdr *pstudiohdr ) { if ( !pstudiohdr ) return; if( pstudiohdr->GetEventListVersion() != g_nEventListVersion ) { for ( int i = 0 ; i < pstudiohdr->GetNumSeq() ; i++ ) { SetEventIndexForSequence( pstudiohdr->pSeqdesc( i ) ); } pstudiohdr->SetEventListVersion( g_nEventListVersion ); } }
void IndexModelSequences( CStudioHdr *pstudiohdr ) { int i; if (! pstudiohdr) return; if (!pstudiohdr->SequencesAvailable()) return; for ( i = 0 ; i < pstudiohdr->GetNumSeq() ; i++ ) { SetActivityForSequence( pstudiohdr, i ); SetEventIndexForSequence( pstudiohdr->pSeqdesc( i ) ); } pstudiohdr->SetActivityListVersion( g_nActivityListVersion ); }