initial upload
This commit is contained in:
@ -0,0 +1,123 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
namespace HeneGames.Airplane
|
||||
{
|
||||
/// <summary>
|
||||
/// Reads flight controls via the Input System (works when the project uses the new Input System).
|
||||
/// Falls back to legacy Input when the old backend is enabled.
|
||||
/// </summary>
|
||||
internal static class SimpleAirplaneInput
|
||||
{
|
||||
public static float Horizontal => ReadAxis("Horizontal", ReadHorizontalKeyboard);
|
||||
|
||||
public static float Vertical => ReadAxis("Vertical", ReadVerticalKeyboard);
|
||||
|
||||
public static bool YawLeft => IsPressed(Key.Q, KeyCode.Q);
|
||||
|
||||
public static bool YawRight => IsPressed(Key.E, KeyCode.E);
|
||||
|
||||
public static bool Turbo => IsPressed(Key.LeftShift, KeyCode.LeftShift);
|
||||
|
||||
public static bool GetKeyDown(KeyCode keyCode)
|
||||
{
|
||||
var keyboard = Keyboard.current;
|
||||
if (keyboard != null && TryMapKey(keyCode, out Key key))
|
||||
return keyboard[key].wasPressedThisFrame;
|
||||
|
||||
#if ENABLE_LEGACY_INPUT_MANAGER
|
||||
return Input.GetKeyDown(keyCode);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
public static bool GetKey(KeyCode keyCode)
|
||||
{
|
||||
var keyboard = Keyboard.current;
|
||||
if (keyboard != null && TryMapKey(keyCode, out Key key))
|
||||
return keyboard[key].isPressed;
|
||||
|
||||
#if ENABLE_LEGACY_INPUT_MANAGER
|
||||
return Input.GetKey(keyCode);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
private static float ReadAxis(string axisName, System.Func<float> readKeyboard)
|
||||
{
|
||||
var keyboard = Keyboard.current;
|
||||
if (keyboard != null)
|
||||
{
|
||||
float value = readKeyboard();
|
||||
if (value != 0f)
|
||||
return value;
|
||||
}
|
||||
|
||||
#if ENABLE_LEGACY_INPUT_MANAGER
|
||||
return Input.GetAxisRaw(axisName);
|
||||
#else
|
||||
return 0f;
|
||||
#endif
|
||||
}
|
||||
|
||||
private static float ReadHorizontalKeyboard()
|
||||
{
|
||||
var keyboard = Keyboard.current;
|
||||
float value = 0f;
|
||||
if (keyboard.aKey.isPressed || keyboard.leftArrowKey.isPressed)
|
||||
value -= 1f;
|
||||
if (keyboard.dKey.isPressed || keyboard.rightArrowKey.isPressed)
|
||||
value += 1f;
|
||||
return value;
|
||||
}
|
||||
|
||||
private static float ReadVerticalKeyboard()
|
||||
{
|
||||
var keyboard = Keyboard.current;
|
||||
float value = 0f;
|
||||
if (keyboard.sKey.isPressed || keyboard.downArrowKey.isPressed)
|
||||
value -= 1f;
|
||||
if (keyboard.wKey.isPressed || keyboard.upArrowKey.isPressed)
|
||||
value += 1f;
|
||||
return value;
|
||||
}
|
||||
|
||||
private static bool IsPressed(Key inputSystemKey, KeyCode legacyKey)
|
||||
{
|
||||
var keyboard = Keyboard.current;
|
||||
if (keyboard != null && keyboard[inputSystemKey].isPressed)
|
||||
return true;
|
||||
|
||||
#if ENABLE_LEGACY_INPUT_MANAGER
|
||||
return Input.GetKey(legacyKey);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
private static bool TryMapKey(KeyCode keyCode, out Key key)
|
||||
{
|
||||
switch (keyCode)
|
||||
{
|
||||
case KeyCode.Space: key = Key.Space; return true;
|
||||
case KeyCode.LeftShift: key = Key.LeftShift; return true;
|
||||
case KeyCode.RightShift: key = Key.RightShift; return true;
|
||||
case KeyCode.Q: key = Key.Q; return true;
|
||||
case KeyCode.E: key = Key.E; return true;
|
||||
case KeyCode.W: key = Key.W; return true;
|
||||
case KeyCode.A: key = Key.A; return true;
|
||||
case KeyCode.S: key = Key.S; return true;
|
||||
case KeyCode.D: key = Key.D; return true;
|
||||
case KeyCode.UpArrow: key = Key.UpArrow; return true;
|
||||
case KeyCode.DownArrow: key = Key.DownArrow; return true;
|
||||
case KeyCode.LeftArrow: key = Key.LeftArrow; return true;
|
||||
case KeyCode.RightArrow: key = Key.RightArrow; return true;
|
||||
default:
|
||||
key = Key.None;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user