void CActor::attach_Vehicle(CHolderCustom* vehicle) { if(!vehicle) return; if(m_holder) return; PickupModeOff (); m_holder=vehicle; CKinematicsAnimated* V = smart_cast<CKinematicsAnimated*>(Visual()); R_ASSERT(V); if(!m_holder->attach_Actor(this)){ m_holder=NULL; return; } // temp play animation CCar* car = smart_cast<CCar*>(m_holder); u16 anim_type = car->DriverAnimationType(); SVehicleAnimCollection& anims = m_vehicle_anims->m_vehicles_type_collections[anim_type]; V->PlayCycle (anims.idles[0],FALSE); ResetCallbacks (); u16 head_bone = V->LL_BoneID("bip01_head"); V->LL_GetBoneInstance (u16(head_bone)).set_callback (bctPhysics, VehicleHeadCallback,this); character_physics_support ()->movement()->DestroyCharacter(); mstate_wishful = 0; m_holderID=car->ID (); SetWeaponHideState (INV_STATE_CAR, true); CStepManager::on_animation_start(MotionID(), 0); }
void CActor::steer_Vehicle(float angle) { if(!m_holder) return; CCar* car = smart_cast<CCar*>(m_holder); u16 anim_type = car->DriverAnimationType(); SVehicleAnimCollection& anims=m_vehicle_anims->m_vehicles_type_collections[anim_type]; if(angle==0.f) smart_cast<CKinematicsAnimated*> (Visual())->PlayCycle(anims.idles[0]); else if(angle>0.f) smart_cast<CKinematicsAnimated*> (Visual())->PlayCycle(anims.steer_right); else smart_cast<CKinematicsAnimated*> (Visual())->PlayCycle(anims.steer_left); }