void CUnoccupiedVehicleSync::Packet_UnoccupiedVehicleSync ( NetBitStreamInterface& BitStream ) { // While we're not out of vehicles while ( BitStream.GetNumberOfUnreadBits () >= 8 ) { SUnoccupiedVehicleSync vehicle; if ( BitStream.Read ( &vehicle ) ) { CClientVehicle* pVehicle = m_pVehicleManager->Get ( vehicle.data.vehicleID ); if ( pVehicle && pVehicle->CanUpdateSync ( vehicle.data.ucTimeContext ) ) { if ( vehicle.data.bSyncPosition ) pVehicle->SetTargetPosition ( vehicle.data.vecPosition, UNOCCUPIED_VEHICLE_SYNC_RATE, vehicle.data.bSyncVelocity, vehicle.data.vecVelocity.fZ ); if ( vehicle.data.bSyncRotation ) pVehicle->SetTargetRotation ( vehicle.data.vecRotation, UNOCCUPIED_VEHICLE_SYNC_RATE ); if ( vehicle.data.bSyncVelocity ) pVehicle->SetMoveSpeed ( vehicle.data.vecVelocity ); if ( vehicle.data.bSyncTurnVelocity ) pVehicle->SetTurnSpeed ( vehicle.data.vecTurnVelocity ); if ( vehicle.data.bSyncHealth ) pVehicle->SetHealth ( vehicle.data.fHealth ); pVehicle->SetEngineOn ( vehicle.data.bEngineOn ); if ( pVehicle->GetVehicleType() == CLIENTVEHICLE_TRAIN ) pVehicle->SetDerailed ( vehicle.data.bDerailed ); #ifdef MTA_DEBUG pVehicle->m_pLastSyncer = NULL; pVehicle->m_ulLastSyncTime = GetTickCount32 (); pVehicle->m_szLastSyncType = "unoccupied"; #endif } } else break; } }