本文整理汇总了C++中CVehicle::GetRotationDegrees方法的典型用法代码示例。如果您正苦于以下问题:C++ CVehicle::GetRotationDegrees方法的具体用法?C++ CVehicle::GetRotationDegrees怎么用?C++ CVehicle::GetRotationDegrees使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CVehicle
的用法示例。
在下文中一共展示了CVehicle::GetRotationDegrees方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Write
bool CVehiclePuresyncPacket::Write ( NetBitStreamInterface& BitStream ) const
{
// Got a player to send?
if ( m_pSourceElement )
{
CPlayer * pSourcePlayer = static_cast < CPlayer * > ( m_pSourceElement );
// Player is in a vehicle and is the driver?
CVehicle* pVehicle = pSourcePlayer->GetOccupiedVehicle ();
if ( pVehicle )
{
// Player ID
ElementID PlayerID = pSourcePlayer->GetID ();
BitStream.Write ( PlayerID );
// Write the time context of that player
BitStream.Write ( pSourcePlayer->GetSyncTimeContext () );
// Write his ping divided with 2 plus a small number so the client can find out when this packet was sent
unsigned short usLatency = pSourcePlayer->GetPing ();
BitStream.WriteCompressed ( usLatency );
// Write the keysync data
CControllerState ControllerState = pSourcePlayer->GetPad ()->GetCurrentControllerState ();
WriteFullKeysync ( ControllerState, BitStream );
// Write the vehicle matrix only if he's the driver
CVector vecTemp;
unsigned int uiSeat = pSourcePlayer->GetOccupiedVehicleSeat ();
if ( uiSeat == 0 )
{
// Vehicle position
SPositionSync position ( false );
position.data.vecPosition = pVehicle->GetPosition ();
BitStream.Write ( &position );
// Vehicle rotation
SRotationDegreesSync rotation;
pVehicle->GetRotationDegrees ( rotation.data.vecRotation );
BitStream.Write ( &rotation );
// Move speed vector
SVelocitySync velocity;
velocity.data.vecVelocity = pVehicle->GetVelocity ();
BitStream.Write ( &velocity );
// Turn speed vector
SVelocitySync turnSpeed;
turnSpeed.data.vecVelocity = pVehicle->GetTurnSpeed ();
BitStream.Write ( &turnSpeed );
// Health
SVehicleHealthSync health;
health.data.fValue = pVehicle->GetHealth ();
BitStream.Write ( &health );
}
// Player health and armor
SPlayerHealthSync health;
health.data.fValue = pSourcePlayer->GetHealth ();
BitStream.Write ( &health );
SPlayerArmorSync armor;
armor.data.fValue = pSourcePlayer->GetArmor ();
BitStream.Write ( &armor );
// Weapon
unsigned char ucWeaponType = pSourcePlayer->GetWeaponType ();
// Flags
SVehiclePuresyncFlags flags;
flags.data.bIsWearingGoggles = pSourcePlayer->IsWearingGoggles ();
flags.data.bIsDoingGangDriveby = pSourcePlayer->IsDoingGangDriveby ();
flags.data.bIsSirenOrAlarmActive = pVehicle->IsSirenActive ();
flags.data.bIsSmokeTrailEnabled = pVehicle->IsSmokeTrailEnabled ();
flags.data.bIsLandingGearDown = pVehicle->IsLandingGearDown ();
flags.data.bIsOnGround = pVehicle->IsOnGround ();
flags.data.bIsInWater = pVehicle->IsInWater ();
flags.data.bIsDerailed = pVehicle->IsDerailed ();
flags.data.bIsAircraft = ( pVehicle->GetVehicleType () == VEHICLE_PLANE ||
pVehicle->GetVehicleType () == VEHICLE_HELI );
flags.data.bHasAWeapon = ( ucWeaponType != 0 );
flags.data.bIsHeliSearchLightVisible = pVehicle->IsHeliSearchLightVisible ();
BitStream.Write ( &flags );
// Write the weapon stuff
if ( flags.data.bHasAWeapon )
{
// Write the weapon slot
SWeaponSlotSync slot;
slot.data.uiSlot = pSourcePlayer->GetWeaponSlot ();
BitStream.Write ( &slot );
if ( flags.data.bIsDoingGangDriveby && CWeaponNames::DoesSlotHaveAmmo ( slot.data.uiSlot ) )
{
// Write the ammo states
SWeaponAmmoSync ammo ( ucWeaponType, false, true );
ammo.data.usAmmoInClip = pSourcePlayer->GetWeaponAmmoInClip ();
BitStream.Write ( &ammo );
//.........这里部分代码省略.........
示例2: Write
//.........这里部分代码省略.........
break;
}
case CPickup::HEALTH:
{
SPlayerHealthSync health;
health.data.fValue = pPickup->GetAmount ();
BitStream.Write ( &health );
break;
}
case CPickup::WEAPON:
{
SWeaponTypeSync weaponType;
weaponType.data.ucWeaponType = pPickup->GetWeaponType ();
BitStream.Write ( &weaponType );
SWeaponAmmoSync ammo ( weaponType.data.ucWeaponType, true, false );
ammo.data.usTotalAmmo = pPickup->GetAmmo ();
BitStream.Write ( &ammo );
break;
}
default: break;
}
break;
}
case CElement::VEHICLE:
{
CVehicle* pVehicle = static_cast < CVehicle* > ( pElement );
// Write the vehicle position and rotation
position.data.vecPosition = pVehicle->GetPosition ();
SRotationDegreesSync rotationDegrees ( false );
pVehicle->GetRotationDegrees ( rotationDegrees.data.vecRotation );
// Write it
BitStream.Write ( &position );
BitStream.Write ( &rotationDegrees );
// Vehicle id as a char
// I'm assuming the "-400" is for adjustment so that all car values can
// fit into a char? Why doesn't someone document this?
//
// --slush
BitStream.Write ( static_cast < unsigned char > ( pVehicle->GetModel () - 400 ) );
// Health
SVehicleHealthSync health;
health.data.fValue = pVehicle->GetHealth ();
BitStream.Write ( &health );
// Color
CVehicleColor& vehColor = pVehicle->GetColor ();
uchar ucNumColors = vehColor.GetNumColorsUsed () - 1;
BitStream.WriteBits ( &ucNumColors, 2 );
for ( uint i = 0 ; i <= ucNumColors ; i++ )
{
SColor RGBColor = vehColor.GetRGBColor ( i );
BitStream.Write ( RGBColor.R );
BitStream.Write ( RGBColor.G );
BitStream.Write ( RGBColor.B );
}
// Paintjob
SPaintjobSync paintjob;
paintjob.data.ucPaintjob = pVehicle->GetPaintjob ();