From 6cb8f716b351f8267cdce1ced804cb33670345f3 Mon Sep 17 00:00:00 2001 From: Valera Date: Fri, 21 Nov 2025 17:52:25 +0700 Subject: [PATCH] new cars and maps --- Code/Base/Powertrain/Clutch.cs | 8 ++++---- Code/Base/Powertrain/Engine.cs | 2 +- Code/Base/VeloXBase.Input.cs | 8 +++++++- Code/Base/VeloXBase.Phys.cs | 4 ++-- Code/Base/Wheel/VeloXWheel.Friction.cs | 3 ++- Code/Base/Wheel/VeloXWheel.Gizmo.cs | 1 + Code/Base/Wheel/VeloXWheel.cs | 1 + Code/Input/InputResolver.cs | 27 ++++++++++++++++++++++++++ 8 files changed, 45 insertions(+), 9 deletions(-) diff --git a/Code/Base/Powertrain/Clutch.cs b/Code/Base/Powertrain/Clutch.cs index 497abb2..3c7850a 100644 --- a/Code/Base/Powertrain/Clutch.cs +++ b/Code/Base/Powertrain/Clutch.cs @@ -117,10 +117,10 @@ public partial class Clutch : PowertrainComponent ClutchInput = 1f; } - if ( Controller.SwappedBrakes > 0 ) - { - ClutchInput = 0; - } + //if ( Controller.SwappedBrakes > 0 ) + //{ + // ClutchInput = 0; + //} } if ( Controller.IsClutching > 0 ) { diff --git a/Code/Base/Powertrain/Engine.cs b/Code/Base/Powertrain/Engine.cs index d2b14b1..fbff1d5 100644 --- a/Code/Base/Powertrain/Engine.cs +++ b/Code/Base/Powertrain/Engine.cs @@ -334,7 +334,7 @@ public class Engine : PowertrainComponent, IScenePhysicsEvents // Calculate generated torque and power float generatedTorque = CalculateTorqueICE( OutputAngularVelocity, dt ); generatedPower = TorqueToPowerInKW( in OutputAngularVelocity, in generatedTorque ); - + // Calculate reaction torque float reactionTorque = (targetAngularVelocity - OutputAngularVelocity) * Inertia / dt; diff --git a/Code/Base/VeloXBase.Input.cs b/Code/Base/VeloXBase.Input.cs index 50413f9..f3f6b7e 100644 --- a/Code/Base/VeloXBase.Input.cs +++ b/Code/Base/VeloXBase.Input.cs @@ -34,6 +34,8 @@ public abstract partial class VeloXBase public float SwappedBrakes => IsInputSwapped ? Throttle : Brakes; + public bool AnyInput => Throttle > 0 || Brakes > 0; + [Sync] public float VerticalInput { @@ -106,7 +108,11 @@ public abstract partial class VeloXBase } protected void UpdateInput() { - VerticalInput = Input.AnalogMove.x; + //VerticalInput = Input.AnalogMove.x; + + Brakes = Input.Brake; + Throttle = Input.Throttle; + Handbrake = Input.Down( "Handbrake" ) ? 1 : 0; SteeringAngle = Input.AnalogMove.y; diff --git a/Code/Base/VeloXBase.Phys.cs b/Code/Base/VeloXBase.Phys.cs index 16e1ea0..5bbc0b5 100644 --- a/Code/Base/VeloXBase.Phys.cs +++ b/Code/Base/VeloXBase.Phys.cs @@ -42,12 +42,12 @@ public abstract partial class VeloXBase } else { - v.BrakeTorque = SwappedBrakes * BrakeForce * 0.7f; + v.BrakeTorque = SwappedBrakes * BrakeForce * 0.2f; v.BrakeTorque += Handbrake * HandbrakeForce; } - if ( TotalSpeed < 1 && Input.AnalogMove.x == 0 ) + if ( TotalSpeed < 1 && !AnyInput ) { v.BrakeTorque = HandbrakeForce; } diff --git a/Code/Base/Wheel/VeloXWheel.Friction.cs b/Code/Base/Wheel/VeloXWheel.Friction.cs index f7d338b..869a78b 100644 --- a/Code/Base/Wheel/VeloXWheel.Friction.cs +++ b/Code/Base/Wheel/VeloXWheel.Friction.cs @@ -249,7 +249,8 @@ public partial class VeloXWheel { lowSpeedReferenceIsSet = false; } - ForwardFriction.Force = Math.Clamp( ForwardFriction.Force, -peakForwardFrictionForce, peakForwardFrictionForce ); + + ForwardFriction.Force = Math.Clamp( ForwardFriction.Force * Tire.Evaluate( Math.Abs( ForwardFriction.Slip ) ), -peakForwardFrictionForce, peakForwardFrictionForce ); SidewayFriction.Force = Math.Clamp( SidewayFriction.Force, -peakSideFrictionForce, peakSideFrictionForce ); diff --git a/Code/Base/Wheel/VeloXWheel.Gizmo.cs b/Code/Base/Wheel/VeloXWheel.Gizmo.cs index da3a8f3..436508b 100644 --- a/Code/Base/Wheel/VeloXWheel.Gizmo.cs +++ b/Code/Base/Wheel/VeloXWheel.Gizmo.cs @@ -1,4 +1,5 @@ using Sandbox; +using System; namespace VeloX; diff --git a/Code/Base/Wheel/VeloXWheel.cs b/Code/Base/Wheel/VeloXWheel.cs index e4f7a2f..6951df1 100644 --- a/Code/Base/Wheel/VeloXWheel.cs +++ b/Code/Base/Wheel/VeloXWheel.cs @@ -61,6 +61,7 @@ public partial class VeloXWheel : Component internal void Update( VeloXBase vehicle, in float dt ) { UpdateVisuals( vehicle, dt ); + } private void UpdateVisuals( VeloXBase vehicle, in float dt ) diff --git a/Code/Input/InputResolver.cs b/Code/Input/InputResolver.cs index f04e590..b3282e3 100644 --- a/Code/Input/InputResolver.cs +++ b/Code/Input/InputResolver.cs @@ -1,6 +1,7 @@ using Sandbox; namespace VeloX; + public class InputResolver { public Connection Driver { get; internal set; } @@ -30,6 +31,27 @@ public class InputResolver return IsDriverActive && Input.Down( action ); } + public float Brake + { + get + { + if ( Input.UsingController ) + return Input.GetAnalog( InputAnalog.LeftTrigger ); + + return Input.Down( "Brake" ) ? 1 : 0; + } + } + public float Throttle + { + get + { + if ( Input.UsingController ) + return Input.GetAnalog( InputAnalog.RightTrigger ); + + return Input.Down( "Throttle" ) ? 1 : 0; + } + } + public bool Pressed( string action ) { return IsDriverActive && Input.Pressed( action ); @@ -40,6 +62,11 @@ public class InputResolver return IsDriverActive && Input.Released( action ); } + public float GetAnalog( InputAnalog analog ) + { + return IsDriverActive ? Input.GetAnalog( analog ) : 0f; + } + public void TriggerHaptics( float leftMotor, float rightMotor, float leftTrigger = 0f, float rightTrigger = 0f, int duration = 500 ) { if ( IsDriverActive )