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