//----------------------------------------------------------------------------- // Name: CBipedAnimInstance::RestoreDeviceObjects() // Desc: Reinitialize necessary objects //----------------------------------------------------------------------------- HRESULT CXFileAnimInstance::RestoreDeviceObjects() { // Compress the animation sets in the new animation controller SetupCallbacksAndCompression(); LPD3DXANIMATIONCONTROLLER pAC; m_pAI->GetAnimController( & pAC ); pAC->ResetTime(); pAC->AdvanceTime( m_dTimeCurrent, NULL ); // Initialize current track if( m_szASName[0] != '\0' ) { DWORD dwActiveSet = GetAnimIndex( m_szASName ); LPD3DXANIMATIONSET pAS = NULL; pAC->GetAnimationSet( dwActiveSet, &pAS ); pAC->SetTrackAnimationSet( m_dwCurrentTrack, pAS ); SAFE_RELEASE( pAS ); } pAC->SetTrackEnable( m_dwCurrentTrack, TRUE ); pAC->SetTrackWeight( m_dwCurrentTrack, 1.0f ); pAC->SetTrackSpeed( m_dwCurrentTrack, 1.0f ); SAFE_RELEASE( pAC ); // Call animate to initialize the tracks. Animate( 0.0 ); return S_OK; }