Better brake lights

This commit is contained in:
EntenKoeniq
2022-01-01 17:24:55 +01:00
parent 42903a1b53
commit 6f2da854a9
7 changed files with 47 additions and 31 deletions

View File

@ -45,6 +45,7 @@ namespace CoopClient.Entities.NPC
private bool LastHornActive = false;
internal bool IsHornActive { get; set; }
internal bool VehAreLightsOn { get; set; }
internal bool VehAreBrakeLightsOn = false;
internal bool VehAreHighBeamsOn { get; set; }
internal byte VehLandingGear { get; set; }
internal bool VehRoofOpened { get; set; }
@ -236,7 +237,7 @@ namespace CoopClient.Entities.NPC
}
}
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle, CurrentVehicleSpeed > 0.2f && LastVehicleSpeed > CurrentVehicleSpeed);
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle.Handle, VehAreBrakeLightsOn);
if (LastSyncWasFull)
{

View File

@ -362,26 +362,32 @@ namespace CoopClient.Entities.Player
UpdateOnFootPosition();
}
private byte LastStuckCount = 0;
private bool StuckDetection = false;
private ulong LastStuckTime;
private void UpdateOnFootPosition(bool updatePosition = true, bool updateRotation = true, bool updateVelocity = true)
{
ulong time = Util.GetTickCount64();
if (StuckDetection)
{
if (time - LastStuckTime >= 500)
{
StuckDetection = false;
if (Character.Position.DistanceTo(Position) > 5f)
{
if (Util.GetTickCount64() - LastStuckTime < 1000)
{
LastStuckCount = 0;
Character.PositionNoOffset = Position;
Character.Rotation = Rotation;
}
++LastStuckCount;
if (LastStuckCount >= 5)
{
Character.Position = Position;
LastStuckCount = 0;
}
LastStuckTime = Util.GetTickCount64();
}
else if (time - LastStuckTime >= 500)
{
if (Character.Position.DistanceTo(Position) > 5f)
{
StuckDetection = true;
LastStuckTime = time;
}
}
if (updatePosition)

View File

@ -63,6 +63,7 @@ namespace CoopClient.Entities.Player
private bool LastHornActive = false;
internal bool IsHornActive { get; set; }
internal bool VehAreLightsOn { get; set; }
internal bool VehAreBrakeLightsOn = false;
internal bool VehAreHighBeamsOn { get; set; }
internal byte VehLandingGear { get; set; }
internal bool VehRoofOpened { get; set; }
@ -259,7 +260,7 @@ namespace CoopClient.Entities.Player
}
}
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle, CurrentVehicleSpeed > 0.2f && LastVehicleSpeed > CurrentVehicleSpeed);
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle.Handle, VehAreBrakeLightsOn);
if (LastSyncWasFull)
{

View File

@ -385,6 +385,7 @@ namespace CoopClient
DebugSyncPed.IsInVehicle = true;
DebugSyncPed.VehIsEngineRunning = (flags.Value & (ushort)VehicleDataFlags.IsEngineRunning) > 0;
DebugSyncPed.VehAreLightsOn = (flags.Value & (ushort)VehicleDataFlags.AreLightsOn) > 0;
DebugSyncPed.VehAreBrakeLightsOn = (flags.Value & (ushort)VehicleDataFlags.AreBrakeLightsOn) > 0;
DebugSyncPed.VehAreHighBeamsOn = (flags.Value & (ushort)VehicleDataFlags.AreHighBeamsOn) > 0;
DebugSyncPed.VehIsSireneActive = (flags.Value & (ushort)VehicleDataFlags.IsSirenActive) > 0;
DebugSyncPed.VehicleDead = (flags.Value & (ushort)VehicleDataFlags.IsDead) > 0;

View File

@ -149,14 +149,15 @@ namespace CoopClient
{
IsEngineRunning = 1 << 0,
AreLightsOn = 1 << 1,
AreHighBeamsOn = 1 << 2,
IsSirenActive = 1 << 3,
IsDead = 1 << 4,
IsHornActive = 1 << 5,
IsTransformed = 1 << 6,
RoofOpened = 1 << 7,
OnTurretSeat = 1 << 8,
IsPlane = 1 << 9
AreBrakeLightsOn = 1 << 2,
AreHighBeamsOn = 1 << 3,
IsSirenActive = 1 << 4,
IsDead = 1 << 5,
IsHornActive = 1 << 6,
IsTransformed = 1 << 7,
RoofOpened = 1 << 8,
OnTurretSeat = 1 << 9,
IsPlane = 1 << 10
}
/// <summary>

View File

@ -187,6 +187,11 @@ namespace CoopClient
flags |= (ushort)VehicleDataFlags.AreLightsOn;
}
if (veh.BrakePower >= 0.01f)
{
flags |= (ushort)VehicleDataFlags.AreBrakeLightsOn;
}
if (veh.AreHighBeamsOn)
{
flags |= (ushort)VehicleDataFlags.AreHighBeamsOn;

View File

@ -135,14 +135,15 @@ namespace CoopServer
{
IsEngineRunning = 1 << 0,
AreLightsOn = 1 << 1,
AreHighBeamsOn = 1 << 2,
IsSirenActive = 1 << 3,
IsDead = 1 << 4,
IsHornActive = 1 << 5,
IsTransformed = 1 << 6,
RoofOpened = 1 << 7,
OnTurretSeat = 1 << 8,
IsPlane = 1 << 9
AreBrakeLightsOn = 1 << 2,
AreHighBeamsOn = 1 << 3,
IsSirenActive = 1 << 4,
IsDead = 1 << 5,
IsHornActive = 1 << 6,
IsTransformed = 1 << 7,
RoofOpened = 1 << 8,
OnTurretSeat = 1 << 9,
IsPlane = 1 << 10
}
struct VehicleDamageModel