using Sandbox; using System; namespace VeloX.Powertrain; public class PowerWheel : PowertrainComponent { [Property] public VeloXWheel Wheel { get; set; } public override float QueryInertia() { float dtScale = Math.Clamp( Time.Delta, 0.01f, 0.05f ) / 0.005f; return Wheel.BaseInertia * dtScale; } public override float QueryAngularVelocity( float angularVelocity ) { return Wheel.AngularVelocity; } public override float ForwardStep( float torque, float inertia ) { Wheel.AutoPhysics = false; Wheel.Torque = torque; Wheel.Brake = Vehicle.Brake; Inertia = Wheel.BaseInertia + inertia; Wheel.Inertia = inertia; Wheel.DoPhysics( Vehicle ); angularVelocity = Wheel.AngularVelocity; return Wheel.CounterTorque; } }