Pawn/SkateInput.cs
namespace Skateboard.Player;
public sealed class SkateInput : Component
{
[Property] public SkatePawn Pawn { get; set; }
[Sync] public Vector3 Move { get; private set; }
[Sync] public Angles Look { get; private set; }
[Sync] public bool JumpPressed { get; private set; }
[Sync] public bool JumpHeld { get; private set; }
[Sync] public bool FlipPressed { get; private set; }
[Sync] public bool GrabPressed { get; private set; }
[Sync] public bool GrindPressed { get; private set; }
[Sync] public bool GrindHeld { get; private set; }
[Sync] public bool RevertPressed { get; private set; }
[Sync] public bool CrouchHeld { get; private set; }
[Sync] public bool CrouchPressed { get; private set; }
protected override void OnUpdate()
{
Pawn ??= Components.Get<SkatePawn>();
if ( !IsLocallyControlled() )
return;
Move = Input.AnalogMove;
Look = Input.AnalogLook;
JumpPressed = Input.Pressed( "Jump" );
JumpHeld = Input.Down( "Jump" );
FlipPressed = Input.Pressed( "attack1" );
GrabPressed = Input.Pressed( "attack2" );
GrindPressed = Input.Pressed( "use" );
GrindHeld = Input.Down( "use" );
RevertPressed = Input.Pressed( "Run" );
CrouchHeld = Input.Down( "Duck" );
CrouchPressed = Input.Pressed( "Duck" );
}
private bool IsLocallyControlled()
{
if ( !Networking.IsActive )
return true;
if ( !Pawn.IsValid() )
return false;
return GameObject.Network.IsOwner || Pawn.OwningConnectionId == Connection.Local.Id;
}
}