void CPhysicsShellHolder::activate_physic_shell() { VERIFY (!m_pPhysicsShell); create_physic_shell (); Fvector l_fw, l_up; l_fw.set (XFORM().k); l_up.set (XFORM().j); l_fw.mul (2.f); l_up.mul (2.f); Fmatrix l_p1, l_p2; l_p1.set (XFORM()); l_p2.set (XFORM()); l_fw.mul (2.f); l_p2.c.add (l_fw); m_pPhysicsShell->Activate (l_p1, 0, l_p2); if(H_Parent()&&H_Parent()->Visual()) { smart_cast<CKinematics*>(H_Parent()->Visual())->CalculateBones_Invalidate (); smart_cast<CKinematics*>(H_Parent()->Visual())->CalculateBones (); } smart_cast<CKinematics*>(Visual())->CalculateBones_Invalidate (); smart_cast<CKinematics*>(Visual())->CalculateBones(); if(!IsGameTypeSingle()) { if(!smart_cast<CCustomRocket*>(this)&&!smart_cast<CGrenade*>(this)) PPhysicsShell()->SetIgnoreDynamic(); } // XFORM().set (l_p1); correct_spawn_pos(); m_pPhysicsShell->set_LinearVel(l_fw); m_pPhysicsShell->GetGlobalTransformDynamic(&XFORM()); }
void CPhysicsShellHolder::setup_physic_shell () { VERIFY (!m_pPhysicsShell); create_physic_shell (); m_pPhysicsShell->Activate (XFORM(),0,XFORM()); smart_cast<IKinematics*>(Visual())->CalculateBones_Invalidate (); smart_cast<IKinematics*>(Visual())->CalculateBones(TRUE); correct_spawn_pos(); m_pPhysicsShell->GetGlobalTransformDynamic(&XFORM()); }