91 lines
2.0 KiB
C#
91 lines
2.0 KiB
C#
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 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 );
|
|
}
|
|
|
|
public bool Released( string action )
|
|
{
|
|
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 )
|
|
{
|
|
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();
|
|
}
|
|
}
|