@@ -881,7 +881,9 @@ struct PlayerPool final : public IPlayerPool, public NetworkEventHandler, public
881881 || (aimSync.CamMode >= 48u && aimSync.CamMode <= 50u )
882882 || aimSync.CamMode == 52u || aimSync.CamMode == 54u
883883 || aimSync.CamMode == 60u || aimSync.CamMode == 61u || aimSync.CamMode > 64u )
884+ {
884885 aimSync.CamMode = 4u ;
886+ }
885887
886888 aimSync.PlayerID = player.poolID ;
887889 player.aimSync_ = aimSync;
@@ -1393,7 +1395,8 @@ struct PlayerPool final : public IPlayerPool, public NetworkEventHandler, public
13931395 Player& player = static_cast <Player&>(peer);
13941396
13951397 int vehicleModel = vehicle.getModel ();
1396- if (vehicle.isRespawning () || (!vehicle.isStreamedInForPlayer (player) && !(vehicleModel == 569 || vehicleModel == 570 ))) // Check if vehicle is a train carriage (TODO: Move Vehicle::isTrainCarriage to SDK/Components/Vehicles/Impl/vehicle_models.hpp)
1398+ // Check if vehicle is a train carriage (TODO: Move Vehicle::isTrainCarriage to SDK/Components/Vehicles/Impl/vehicle_models.hpp)
1399+ if (vehicle.isRespawning () || (!vehicle.isStreamedInForPlayer (player) && !(vehicleModel == 569 || vehicleModel == 570 )))
13971400 {
13981401 return false ;
13991402 }
@@ -1472,12 +1475,16 @@ struct PlayerPool final : public IPlayerPool, public NetworkEventHandler, public
14721475 return false ;
14731476 }
14741477
1475- if (unoccupiedSync.AngularVelocity .x < -1 .0f || unoccupiedSync.AngularVelocity .x > 1 .0f || unoccupiedSync.AngularVelocity .y < -1 .0f || unoccupiedSync.AngularVelocity .y > 1 .0f || unoccupiedSync.AngularVelocity .z < -1 .0f || unoccupiedSync.AngularVelocity .z > 1 .0f )
1478+ if (unoccupiedSync.AngularVelocity .x < -1 .0f || unoccupiedSync.AngularVelocity .x > 1 .0f
1479+ || unoccupiedSync.AngularVelocity .y < -1 .0f || unoccupiedSync.AngularVelocity .y > 1 .0f
1480+ || unoccupiedSync.AngularVelocity .z < -1 .0f || unoccupiedSync.AngularVelocity .z > 1 .0f )
14761481 {
14771482 return false ;
14781483 }
14791484
1480- if (glm::abs (1.0 - glm::length (unoccupiedSync.Roll )) >= 0.000001 || glm::abs (1.0 - glm::length (unoccupiedSync.Rotation )) >= 0.000001 || glm::abs (unoccupiedSync.Roll .x * unoccupiedSync.Rotation .x + unoccupiedSync.Roll .y * unoccupiedSync.Rotation .y + unoccupiedSync.Roll .z * unoccupiedSync.Rotation .z ) >= 0.000001 )
1485+ if (glm::abs (1.0 - glm::length (unoccupiedSync.Roll )) >= 0.000001
1486+ || glm::abs (1.0 - glm::length (unoccupiedSync.Rotation )) >= 0.000001
1487+ || glm::abs (glm::dot (unoccupiedSync.Roll , unoccupiedSync.Rotation )) >= 0.000001 )
14811488 {
14821489 return false ;
14831490 }
@@ -1498,19 +1505,26 @@ struct PlayerPool final : public IPlayerPool, public NetworkEventHandler, public
14981505
14991506 IPlayerVehicleData* playerVehicleData = queryExtension<IPlayerVehicleData>(peer);
15001507
1501- if (vehicle.getDriver ())
1502- {
1503- return false ;
1504- }
1505- else if (!vehicle.isStreamedInForPlayer (peer))
1508+ if (vehicle.getDriver () || !vehicle.isStreamedInForPlayer (peer))
15061509 {
15071510 return false ;
15081511 }
1509- else if (! unoccupiedSync.SeatID && player. state_ == PlayerState_Passenger )
1512+ else if (unoccupiedSync.SeatID > 0 )
15101513 {
1511- return false ;
1514+ if (player.state_ != PlayerState_Passenger)
1515+ {
1516+ return false ;
1517+ }
1518+ else if (playerVehicleData && playerVehicleData->getVehicle () != &vehicle)
1519+ {
1520+ return false ;
1521+ }
1522+ else if (playerVehicleData && unoccupiedSync.SeatID != playerVehicleData->getSeat ())
1523+ {
1524+ return false ;
1525+ }
15121526 }
1513- else if (unoccupiedSync. SeatID && ( player.state_ != PlayerState_Passenger || (playerVehicleData && playerVehicleData-> getVehicle () != &vehicle) || (playerVehicleData && unoccupiedSync. SeatID != playerVehicleData-> getSeat ())) )
1527+ else if (player.state_ == PlayerState_Passenger )
15141528 {
15151529 return false ;
15161530 }
@@ -1542,11 +1556,26 @@ struct PlayerPool final : public IPlayerPool, public NetworkEventHandler, public
15421556 return false ;
15431557 }
15441558
1545- if (trailerSync.TurnVelocity .x < -1 .0f || trailerSync.TurnVelocity .x > 1 .0f || trailerSync.TurnVelocity .y < -1 .0f || trailerSync.TurnVelocity .y > 1 .0f || trailerSync.TurnVelocity .z < -1 .0f || trailerSync.TurnVelocity .z > 1 .0f )
1559+ if (trailerSync.TurnVelocity .x < -1 .0f || trailerSync.TurnVelocity .x > 1 .0f
1560+ || trailerSync.TurnVelocity .y < -1 .0f || trailerSync.TurnVelocity .y > 1 .0f
1561+ || trailerSync.TurnVelocity .z < -1 .0f || trailerSync.TurnVelocity .z > 1 .0f )
15461562 {
15471563 return false ;
15481564 }
15491565
1566+ float magnitude = glm::length (trailerSync.Quat );
1567+ if (std::abs (1 .0f - magnitude) >= 0 .000001f )
1568+ {
1569+ if (magnitude < 0 .1f )
1570+ {
1571+ trailerSync.Quat = glm::vec4 (0 .5f );
1572+ }
1573+ else
1574+ {
1575+ trailerSync.Quat /= magnitude;
1576+ }
1577+ }
1578+
15501579 IVehicle* vehiclePtr = self.vehiclesComponent ->get (trailerSync.VehicleID );
15511580 if (!vehiclePtr)
15521581 {
0 commit comments