本文整理汇总了C++中CVehicle::GetRespawnPosition方法的典型用法代码示例。如果您正苦于以下问题:C++ CVehicle::GetRespawnPosition方法的具体用法?C++ CVehicle::GetRespawnPosition怎么用?C++ CVehicle::GetRespawnPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CVehicle
的用法示例。
在下文中一共展示了CVehicle::GetRespawnPosition方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoVehicleRespawning
void CMapManager::DoVehicleRespawning ( void )
{
CVehicleSpawnPacket VehicleSpawnPacket;
// Loop through all vehicles with respawn enabled
list < CVehicle* >& respawnEnabledList = m_pVehicleManager->GetRespawnEnabledVehicles ( );
list < CVehicle* > ::const_iterator iter = respawnEnabledList.begin ( );
for ( ; iter != respawnEnabledList.end ( ); ++iter )
{
CVehicle* pVehicle = *iter;
// No need to respawn vehicles if they're being deleted anyway
if ( pVehicle->IsBeingDeleted ( ) )
continue;
// Did we get deserted?
bool bDeserted = ( !pVehicle->GetFirstOccupant ( ) );
bool bRespawn = false;
bool bExploded = false;
if ( bDeserted )
{
// If moved, or idle timer not running, restart idle timer
if ( !pVehicle->IsStationary ( ) || !pVehicle->IsIdleTimerRunning ( ) )
pVehicle->RestartIdleTimer ( );
}
else
{
// Stop idle timer if car is occupied
pVehicle->StopIdleTimer ( );
}
// Been blown long enough?
if ( pVehicle->IsBlowTimerFinished ( ) )
{
bRespawn = true;
bExploded = true;
}
// Been deserted long enough?
else if ( bDeserted && pVehicle->IsIdleTimerFinished ( ) )
{
// Check is far enough away from respawn point (Ignore first 20 units on z)
CVector vecDif = pVehicle->GetRespawnPosition ( ) - pVehicle->GetPosition ( );
vecDif.fZ = Max ( 0.f, fabsf ( vecDif.fZ ) - 20.f );
if ( vecDif.LengthSquared ( ) > 2 * 2 )
bRespawn = true;
pVehicle->StopIdleTimer ( );
}
// Need to respawn?
if ( bRespawn )
{
// Respawn it and add it to the packet
pVehicle->Respawn ( );
VehicleSpawnPacket.Add ( pVehicle );
// Call the respawn event
CLuaArguments Arguments;
Arguments.PushBoolean ( bExploded );
pVehicle->CallEvent ( "onVehicleRespawn", Arguments );
}
}
// Send it
m_pPlayerManager->BroadcastOnlyJoined ( VehicleSpawnPacket );
}