本文整理汇总了C++中idBitMsg::WriteBits方法的典型用法代码示例。如果您正苦于以下问题:C++ idBitMsg::WriteBits方法的具体用法?C++ idBitMsg::WriteBits怎么用?C++ idBitMsg::WriteBits使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类idBitMsg
的用法示例。
在下文中一共展示了idBitMsg::WriteBits方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WriteNetworkState
/*
================
idScriptObject::WriteNetworkState
================
*/
void idScriptObject::WriteNetworkState( networkStateMode_t mode, const sdEntityStateNetworkData& baseState, sdEntityStateNetworkData& newState, idBitMsg& msg ) const {
NET_GET_STATES( sdScriptObjectNetworkData );
SetupStateData( mode, newData );
baseData.Reset();
newData.Reset();
for ( int i = 0; i < networkFields[ mode ].fields.Num(); i++ ) {
const networkFieldSync_t& value = networkFields[ mode ].fields[ i ];
switch( value.type ) {
case ev_object: {
idScriptObject* object = gameLocal.program->GetScriptObject( *reinterpret_cast< int* >( value.data ) );
int id = 0;
if ( object ) {
idEntity* ent = object->GetClass()->Cast< idEntity >();
id = gameLocal.GetSpawnId( ent );
}
const int& oldBase = baseData.GetInt();
int& newBase = newData.GetInt();
newBase = id;
msg.WriteDeltaLong( oldBase, newBase );
break;
}
case ev_vector: {
const idVec3& oldBase = baseData.GetVector();
idVec3& newBase = newData.GetVector();
newBase = *reinterpret_cast< idVec3* >( value.data );
msg.WriteDeltaVector( oldBase, newBase );
break;
}
case ev_float: {
const float& oldBase = baseData.GetFloat();
float& newBase = newData.GetFloat();
newBase = *reinterpret_cast< float* >( value.data );
msg.WriteDeltaFloat( oldBase, newBase );
break;
}
case ev_boolean: {
const int& oldBase = baseData.GetInt();
int& newBase = newData.GetInt();
newBase = *reinterpret_cast< int* >( value.data ) != 0;
msg.WriteBits( newBase, 1 );
break;
}
}
}
}
示例2: PackStats
void rvPlayerStat::PackStats( idBitMsg& msg ) {
for( int i = 0; i < MAX_WEAPONS; i++ ) {
msg.WriteShort( weaponShots[ i ] );
}
for( int i = 0; i < MAX_WEAPONS; i++ ) {
msg.WriteShort( weaponHits[ i ] );
}
for( int i = 0; i < IGA_NUM_AWARDS; i++ ) {
msg.WriteByte( inGameAwards[ i ] );
}
msg.WriteByte( endGameAwards.Num() );
for( int i = 0; i < endGameAwards.Num(); i++ ) {
msg.WriteByte( endGameAwards[ i ] );
}
msg.WriteBits( idMath::ClampInt( 0, MP_PLAYER_MAXDEATHS, deaths ), ASYNC_PLAYER_DEATH_BITS );
msg.WriteBits( idMath::ClampInt( 0, MP_PLAYER_MAXKILLS, kills ), ASYNC_PLAYER_KILL_BITS );
}
示例3: WriteToSnapshot
/*
================
idPhysics_Monster::WriteToSnapshot
================
*/
void idPhysics_Monster::WriteToSnapshot( idBitMsg& msg ) const
{
msg.WriteFloat( current.origin[0] );
msg.WriteFloat( current.origin[1] );
msg.WriteFloat( current.origin[2] );
msg.WriteFloat( current.velocity[0], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
msg.WriteFloat( current.velocity[1], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
msg.WriteFloat( current.velocity[2], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
msg.WriteDeltaFloat( current.origin[0], current.localOrigin[0] );
msg.WriteDeltaFloat( current.origin[1], current.localOrigin[1] );
msg.WriteDeltaFloat( current.origin[2], current.localOrigin[2] );
msg.WriteDeltaFloat( 0.0f, current.pushVelocity[0], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
msg.WriteDeltaFloat( 0.0f, current.pushVelocity[1], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
msg.WriteDeltaFloat( 0.0f, current.pushVelocity[2], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
msg.WriteLong( current.atRest );
msg.WriteBits( current.onGround, 1 );
}
示例4: WriteToSnapshot
/*
================
idMoveable::WriteToSnapshot
================
*/
void idExplodingBarrel::WriteToSnapshot( idBitMsg& msg ) const
{
idMoveable::WriteToSnapshot( msg );
msg.WriteBits( IsHidden(), 1 );
}