//---------------------------------------------------------------------- void CVehicleMountedWeapon::PerformRipOff(CActor* pOwner) { IActionMapManager* pMapManager = gEnv->pGame->GetIGameFramework()->GetIActionMapManager(); assert(pMapManager); pMapManager->EnableActionMap("vehicle_general", false); IVehicle *pVehicle = gEnv->pGame->GetIGameFramework()->GetIVehicleSystem()->GetVehicle(m_vehicleId); if(pVehicle) { SVehicleEventParams params; params.entityId = GetEntityId(); pVehicle->BroadcastVehicleEvent(eVE_WeaponRemoved, params); if(pOwner) { if(gEnv->bMultiplayer) { const IEntity* pVehicleEnt = pVehicle->GetEntity(); IEntity* pEntity = pOwner->GetEntity(); const Matrix34& vehWMat = pVehicleEnt->GetWorldTM(); m_previousWSpaceOffsetPosition = pEntity->GetWorldPos(); m_localRipUserOffset = vehWMat.GetInverted().TransformPoint(m_previousWSpaceOffsetPosition); } pOwner->LinkToVehicle(0); } m_previousVehicleRotation = pVehicle->GetEntity()->GetWorldRotation(); } CHeavyMountedWeapon::PerformRipOff(pOwner); }