using Sandbox; namespace VeloX; public class InputResolver { public Connection Driver { get; internal set; } private bool IsDriverActive => Driver is not null; public Vector2 MouseDelta => IsDriverActive ? Input.MouseDelta : default; public Vector2 MouseWheel => IsDriverActive ? Input.MouseWheel : default; public Angles AnalogLook => IsDriverActive ? Input.AnalogLook : default; public Vector3 AnalogMove { get { if ( Input.UsingController ) { Vector2 input = 0; input.x = Input.GetAnalog( InputAnalog.RightTrigger ) - Input.GetAnalog( InputAnalog.LeftTrigger ); input.y = -Input.GetAnalog( InputAnalog.LeftStickX ); return input; } return IsDriverActive ? Input.AnalogMove : default; } } public bool Down( string action ) { return IsDriverActive && Input.Down( action ); } public bool Pressed( string action ) { return IsDriverActive && Input.Pressed( action ); } public bool Released( string action ) { return IsDriverActive && Input.Released( action ); } public void TriggerHaptics( float leftMotor, float rightMotor, float leftTrigger = 0f, float rightTrigger = 0f, int duration = 500 ) { if ( IsDriverActive ) { Input.TriggerHaptics( leftMotor, rightMotor, leftTrigger, rightTrigger, duration ); } } public void TriggerHaptics( HapticEffect effect, float lengthScale = 1, float frequencyScale = 1, float amplitudeScale = 1 ) { if ( IsDriverActive ) { Input.TriggerHaptics( effect, lengthScale, frequencyScale, amplitudeScale ); } } public void StopAllHaptics() { if ( IsDriverActive ) Input.StopAllHaptics(); } }