void CIKLimbsController::Destroy(CGameObject* O) { #ifdef _DEBUG CPhysicsShellHolder* Sh = smart_cast<CPhysicsShellHolder*>(O); VERIFY(Sh); CIKLimbsController* ik = Sh->character_ik_controller(); VERIFY( ik ); VERIFY( ik == this ); #endif O->remove_visual_callback(IKVisualCallback); xr_vector<CIKLimb>::iterator i = _bone_chains.begin(), e = _bone_chains.end(); for(;e!=i;++i) i->Destroy(); _bone_chains.clear(); }
void _stdcall CIKLimbsController:: IKVisualCallback( IKinematics* K ) { //if (Device.Paused()) // return; #ifdef DEBUG if( ph_dbg_draw_mask1.test( phDbgIKOff ) ) return; #endif CGameObject* O=( ( CGameObject* )K->GetUpdateCallbackParam()); CPhysicsShellHolder* Sh = smart_cast<CPhysicsShellHolder*>( O ); VERIFY( Sh ); CIKLimbsController* ik = Sh->character_ik_controller( ); VERIFY( ik ); ik->Calculate( ); }