Vehicle sync update
This commit is contained in:
@ -48,6 +48,7 @@ namespace CoopClient
|
||||
public Vehicle MainVehicle { get; set; }
|
||||
public Vector3 VehiclePosition { get; set; }
|
||||
public Quaternion VehicleRotation { get; set; }
|
||||
public Vector3 VehicleVelocity { get; set; }
|
||||
public float VehicleSpeed { get; set; }
|
||||
public float VehicleSteeringAngle { get; set; }
|
||||
private bool LastVehIsEngineRunning { get; set; }
|
||||
@ -274,8 +275,15 @@ namespace CoopClient
|
||||
|
||||
MainVehicle.SteeringAngle = VehicleSteeringAngle;
|
||||
|
||||
// Good enough for now, but we need to create a better sync
|
||||
MainVehicle.Position = VehiclePosition;
|
||||
if (VehicleSpeed > 0.2f)
|
||||
{
|
||||
MainVehicle.Velocity = VehicleVelocity + (VehiclePosition - MainVehicle.Position);
|
||||
}
|
||||
else
|
||||
{
|
||||
MainVehicle.Position = VehiclePosition;
|
||||
}
|
||||
|
||||
MainVehicle.Quaternion = VehicleRotation;
|
||||
#endregion
|
||||
}
|
||||
|
@ -303,6 +303,7 @@ namespace CoopClient
|
||||
DebugSyncPed.VehicleSeatIndex = (int)player.SeatIndex;
|
||||
DebugSyncPed.VehiclePosition = veh.Position;
|
||||
DebugSyncPed.VehicleRotation = veh.Quaternion;
|
||||
DebugSyncPed.VehicleVelocity = veh.Velocity;
|
||||
DebugSyncPed.VehicleSpeed = veh.Speed;
|
||||
DebugSyncPed.VehicleSteeringAngle = veh.SteeringAngle;
|
||||
DebugSyncPed.LastSyncWasFull = (flags.Value & (byte)VehicleDataFlags.LastSyncWasFull) > 0;
|
||||
|
@ -392,6 +392,7 @@ namespace CoopClient
|
||||
npc.VehicleSeatIndex = packet.VehSeatIndex;
|
||||
npc.VehiclePosition = packet.VehPosition.ToVector();
|
||||
npc.VehicleRotation = packet.VehRotation.ToQuaternion();
|
||||
npc.VehicleVelocity = packet.VehVelocity.ToVector();
|
||||
npc.VehicleSpeed = packet.VehSpeed;
|
||||
npc.VehicleSteeringAngle = packet.VehSteeringAngle;
|
||||
npc.LastSyncWasFull = (packet.Flag.Value & (byte)VehicleDataFlags.LastSyncWasFull) > 0;
|
||||
@ -413,6 +414,7 @@ namespace CoopClient
|
||||
VehicleSeatIndex = packet.VehSeatIndex,
|
||||
VehiclePosition = packet.VehPosition.ToVector(),
|
||||
VehicleRotation = packet.VehRotation.ToQuaternion(),
|
||||
VehicleVelocity = packet.VehVelocity.ToVector(),
|
||||
VehicleSpeed = packet.VehSpeed,
|
||||
VehicleSteeringAngle = packet.VehSteeringAngle,
|
||||
LastSyncWasFull = (packet.Flag.Value & (byte)VehicleDataFlags.LastSyncWasFull) > 0,
|
||||
@ -506,6 +508,9 @@ namespace CoopClient
|
||||
VehSeatIndex = (int)npc.SeatIndex,
|
||||
VehPosition = npc.CurrentVehicle.Position.ToLVector(),
|
||||
VehRotation = npc.CurrentVehicle.Quaternion.ToLQuaternion(),
|
||||
VehVelocity = npc.CurrentVehicle.Velocity.ToLVector(),
|
||||
VehSpeed = npc.CurrentVehicle.Speed,
|
||||
VehSteeringAngle = npc.CurrentVehicle.SteeringAngle,
|
||||
Flag = Util.GetPedFlags(npc, true)
|
||||
}.PacketToNetOutGoingMessage(outgoingMessage);
|
||||
}
|
||||
|
@ -468,12 +468,15 @@ namespace CoopClient
|
||||
public LQuaternion VehRotation { get; set; }
|
||||
|
||||
[ProtoMember(10)]
|
||||
public float VehSpeed { get; set; }
|
||||
public LVector3 VehVelocity { get; set; }
|
||||
|
||||
[ProtoMember(11)]
|
||||
public float VehSteeringAngle { get; set; }
|
||||
public float VehSpeed { get; set; }
|
||||
|
||||
[ProtoMember(12)]
|
||||
public float VehSteeringAngle { get; set; }
|
||||
|
||||
[ProtoMember(13)]
|
||||
public byte? Flag { get; set; } = 0;
|
||||
|
||||
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
|
||||
@ -501,6 +504,7 @@ namespace CoopClient
|
||||
VehSeatIndex = data.VehSeatIndex;
|
||||
VehPosition = data.VehPosition;
|
||||
VehRotation = data.VehRotation;
|
||||
VehVelocity = data.VehVelocity;
|
||||
VehSpeed = data.VehSpeed;
|
||||
VehSteeringAngle = data.VehSteeringAngle;
|
||||
Flag = data.Flag;
|
||||
|
@ -431,12 +431,15 @@ namespace CoopServer
|
||||
public LQuaternion VehRotation { get; set; }
|
||||
|
||||
[ProtoMember(10)]
|
||||
public float VehSpeed { get; set; }
|
||||
public LVector3 VehVelocity { get; set; }
|
||||
|
||||
[ProtoMember(11)]
|
||||
public float VehSteeringAngle { get; set; }
|
||||
public float VehSpeed { get; set; }
|
||||
|
||||
[ProtoMember(12)]
|
||||
public float VehSteeringAngle { get; set; }
|
||||
|
||||
[ProtoMember(13)]
|
||||
public byte? Flag { get; set; } = 0;
|
||||
|
||||
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
|
||||
@ -464,6 +467,7 @@ namespace CoopServer
|
||||
VehSeatIndex = data.VehSeatIndex;
|
||||
VehPosition = data.VehPosition;
|
||||
VehRotation = data.VehRotation;
|
||||
VehVelocity = data.VehVelocity;
|
||||
VehSpeed = data.VehSpeed;
|
||||
VehSteeringAngle = data.VehSteeringAngle;
|
||||
Flag = data.Flag;
|
||||
|
Reference in New Issue
Block a user