float StudioModel::GetDuration( int iSequence ) { CStudioHdr *pStudioHdr = GetStudioHdr(); if ( !pStudioHdr ) return 0.0f; return Studio_Duration( pStudioHdr, iSequence, m_poseparameter ); }
//----------------------------------------------------------------------------- // Advance the frame //----------------------------------------------------------------------------- void AdvanceFrame( CStudioHdr *pStudioHdr, int iRun, int model, float dt ) { if (dt > 0.1) dt = 0.1f; float t = Studio_Duration( pStudioHdr, g_BenchRuns[iRun].sequence1[model], s_PoseParameter ); if (t > 0) { s_Cycle[model] += dt / t; // wrap s_Cycle[model] -= (int)(s_Cycle[model]); } else { s_Cycle[model] = 0; } }
//========================================================= //========================================================= float CAnimating::SequenceDuration( CStudioHdr *pStudioHdr, int iSequence ) { if ( !pStudioHdr ) { DevWarning( 2, "CBaseAnimating::SequenceDuration( %d ) NULL pstudiohdr on %s!\n", iSequence, GetClassname() ); return 0.1; } if ( !pStudioHdr->SequencesAvailable() ) { return 0.1; } if (iSequence >= pStudioHdr->GetNumSeq() || iSequence < 0 ) { DevWarning( 2, "CBaseAnimating::SequenceDuration( %d ) out of range\n", iSequence ); return 0.1; } return Studio_Duration( pStudioHdr, iSequence, GetPoseParameterArray() ); }