forked from MoonsideGames/MoonWorks
add doc comments for the Input namespace
parent
1bff459be6
commit
7e18764942
|
@ -3,6 +3,9 @@ using SDL2;
|
||||||
|
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a specific joystick direction on a gamepad.
|
||||||
|
/// </summary>
|
||||||
public class Axis
|
public class Axis
|
||||||
{
|
{
|
||||||
public Gamepad Parent { get; }
|
public Gamepad Parent { get; }
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Can be used to access a gamepad axis virtual button without a direct reference to the button object.
|
||||||
|
/// </summary>
|
||||||
public enum AxisButtonCode
|
public enum AxisButtonCode
|
||||||
{
|
{
|
||||||
LeftX_Left,
|
LeftX_Left,
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
// Enum values are equivalent to SDL GameControllerAxis
|
/// <summary>
|
||||||
|
/// Can be used to access a gamepad axis without a direct reference to the axis object.
|
||||||
|
/// Enum values are equivalent to SDL_GameControllerAxis.
|
||||||
|
/// </summary>
|
||||||
public enum AxisCode
|
public enum AxisCode
|
||||||
{
|
{
|
||||||
LeftX,
|
LeftX,
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
// Enum values are equivalent to the SDL GameControllerButton value.
|
/// <summary>
|
||||||
|
/// Can be used to access a gamepad button without a direct reference to the button object.
|
||||||
|
/// Enum values are equivalent to the SDL GameControllerButton value.
|
||||||
|
/// </summary>
|
||||||
public enum GamepadButtonCode
|
public enum GamepadButtonCode
|
||||||
{
|
{
|
||||||
A,
|
A,
|
||||||
|
|
|
@ -1,14 +1,40 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Container for the current state of a binary input.
|
||||||
|
/// </summary>
|
||||||
public struct ButtonState
|
public struct ButtonState
|
||||||
{
|
{
|
||||||
public ButtonStatus ButtonStatus { get; }
|
public ButtonStatus ButtonStatus { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was pressed this frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsPressed => ButtonStatus == ButtonStatus.Pressed;
|
public bool IsPressed => ButtonStatus == ButtonStatus.Pressed;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was pressed this frame and the previous frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsHeld => ButtonStatus == ButtonStatus.Held;
|
public bool IsHeld => ButtonStatus == ButtonStatus.Held;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was either pressed or continued to be held this frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsDown => ButtonStatus == ButtonStatus.Pressed || ButtonStatus == ButtonStatus.Held;
|
public bool IsDown => ButtonStatus == ButtonStatus.Pressed || ButtonStatus == ButtonStatus.Held;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was let go this frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsReleased => ButtonStatus == ButtonStatus.Released;
|
public bool IsReleased => ButtonStatus == ButtonStatus.Released;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was not pressed this frame or the previous frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsIdle => ButtonStatus == ButtonStatus.Idle;
|
public bool IsIdle => ButtonStatus == ButtonStatus.Idle;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was either idle or released this frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsUp => ButtonStatus == ButtonStatus.Idle || ButtonStatus == ButtonStatus.Released;
|
public bool IsUp => ButtonStatus == ButtonStatus.Idle || ButtonStatus == ButtonStatus.Released;
|
||||||
|
|
||||||
public ButtonState(ButtonStatus buttonStatus)
|
public ButtonState(ButtonStatus buttonStatus)
|
||||||
|
@ -43,7 +69,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Combines two button states. Useful for alt controls or input buffering.
|
/// Combines two button states. Useful for alt control sets or input buffering.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static ButtonState operator |(ButtonState a, ButtonState b)
|
public static ButtonState operator |(ButtonState a, ButtonState b)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents the current status of a binary input.
|
||||||
|
/// </summary>
|
||||||
public enum ButtonStatus
|
public enum ButtonStatus
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
namespace MoonWorks.Input
|
|
||||||
{
|
|
||||||
public enum DeviceKind
|
|
||||||
{
|
|
||||||
None,
|
|
||||||
Keyboard,
|
|
||||||
Mouse,
|
|
||||||
Gamepad,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -5,6 +5,12 @@ using SDL2;
|
||||||
|
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A Gamepad input abstraction that represents input coming from a console controller or other such devices.
|
||||||
|
/// The button names map to a standard Xbox 360 controller.
|
||||||
|
/// For different controllers the relative position of the face buttons will determine the button mapping.
|
||||||
|
/// For example on a DualShock controller the Cross button will map to the A button.
|
||||||
|
/// </summary>
|
||||||
public class Gamepad
|
public class Gamepad
|
||||||
{
|
{
|
||||||
internal IntPtr Handle;
|
internal IntPtr Handle;
|
||||||
|
@ -51,7 +57,14 @@ namespace MoonWorks.Input
|
||||||
|
|
||||||
public bool IsDummy => Handle == IntPtr.Zero;
|
public bool IsDummy => Handle == IntPtr.Zero;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if any input on the gamepad is active. Useful for input remapping.
|
||||||
|
/// </summary>
|
||||||
public bool AnyPressed { get; private set; }
|
public bool AnyPressed { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Contains a reference to an arbitrary VirtualButton that was pressed on the gamepad this frame. Useful for input remapping.
|
||||||
|
/// </summary>
|
||||||
public VirtualButton AnyPressedButton { get; private set; }
|
public VirtualButton AnyPressedButton { get; private set; }
|
||||||
|
|
||||||
private Dictionary<SDL.SDL_GameControllerButton, GamepadButton> EnumToButton;
|
private Dictionary<SDL.SDL_GameControllerButton, GamepadButton> EnumToButton;
|
||||||
|
@ -195,7 +208,7 @@ namespace MoonWorks.Input
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Register(IntPtr handle)
|
internal void Register(IntPtr handle)
|
||||||
{
|
{
|
||||||
Handle = handle;
|
Handle = handle;
|
||||||
|
|
||||||
|
@ -203,7 +216,7 @@ namespace MoonWorks.Input
|
||||||
JoystickInstanceID = SDL.SDL_JoystickInstanceID(joystickHandle);
|
JoystickInstanceID = SDL.SDL_JoystickInstanceID(joystickHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Unregister()
|
internal void Unregister()
|
||||||
{
|
{
|
||||||
Handle = IntPtr.Zero;
|
Handle = IntPtr.Zero;
|
||||||
JoystickInstanceID = -1;
|
JoystickInstanceID = -1;
|
||||||
|
@ -267,16 +280,25 @@ namespace MoonWorks.Input
|
||||||
) == 0;
|
) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Obtains a gamepad button object given a button code.
|
||||||
|
/// </summary>
|
||||||
public GamepadButton Button(GamepadButtonCode buttonCode)
|
public GamepadButton Button(GamepadButtonCode buttonCode)
|
||||||
{
|
{
|
||||||
return EnumToButton[(SDL.SDL_GameControllerButton) buttonCode];
|
return EnumToButton[(SDL.SDL_GameControllerButton) buttonCode];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Obtains an axis button object given a button code.
|
||||||
|
/// </summary>
|
||||||
public AxisButton Button(AxisButtonCode axisButtonCode)
|
public AxisButton Button(AxisButtonCode axisButtonCode)
|
||||||
{
|
{
|
||||||
return AxisButtonCodeToAxisButton[axisButtonCode];
|
return AxisButtonCodeToAxisButton[axisButtonCode];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Obtains a trigger button object given a button code.
|
||||||
|
/// </summary>
|
||||||
public TriggerButton Button(TriggerCode triggerCode)
|
public TriggerButton Button(TriggerCode triggerCode)
|
||||||
{
|
{
|
||||||
return TriggerCodeToTriggerButton[triggerCode];
|
return TriggerCodeToTriggerButton[triggerCode];
|
||||||
|
|
|
@ -3,18 +3,36 @@ using System;
|
||||||
|
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The main container class for all input tracking.
|
||||||
|
/// Your Game class will automatically have a reference to this class.
|
||||||
|
/// </summary>
|
||||||
public class Inputs
|
public class Inputs
|
||||||
{
|
{
|
||||||
public const int MAX_GAMEPADS = 4;
|
public const int MAX_GAMEPADS = 4;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The reference to the Keyboard input abstraction.
|
||||||
|
/// </summary>
|
||||||
public Keyboard Keyboard { get; }
|
public Keyboard Keyboard { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The reference to the Mouse input abstraction.
|
||||||
|
/// </summary>
|
||||||
public Mouse Mouse { get; }
|
public Mouse Mouse { get; }
|
||||||
|
|
||||||
Gamepad[] gamepads;
|
Gamepad[] Gamepads;
|
||||||
|
|
||||||
public static event Action<char> TextInput;
|
public static event Action<char> TextInput;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if any input on any input device is active. Useful for input remapping.
|
||||||
|
/// </summary>
|
||||||
public bool AnyPressed { get; private set; }
|
public bool AnyPressed { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Contains a reference to an arbitrary VirtualButton that was pressed this frame. Useful for input remapping.
|
||||||
|
/// </summary>
|
||||||
public VirtualButton AnyPressedButton { get; private set; }
|
public VirtualButton AnyPressedButton { get; private set; }
|
||||||
|
|
||||||
internal Inputs()
|
internal Inputs()
|
||||||
|
@ -22,12 +40,12 @@ namespace MoonWorks.Input
|
||||||
Keyboard = new Keyboard();
|
Keyboard = new Keyboard();
|
||||||
Mouse = new Mouse();
|
Mouse = new Mouse();
|
||||||
|
|
||||||
gamepads = new Gamepad[MAX_GAMEPADS];
|
Gamepads = new Gamepad[MAX_GAMEPADS];
|
||||||
|
|
||||||
// initialize dummy controllers
|
// initialize dummy controllers
|
||||||
for (var slot = 0; slot < MAX_GAMEPADS; slot += 1)
|
for (var slot = 0; slot < MAX_GAMEPADS; slot += 1)
|
||||||
{
|
{
|
||||||
gamepads[slot] = new Gamepad(IntPtr.Zero, slot);
|
Gamepads[slot] = new Gamepad(IntPtr.Zero, slot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +71,7 @@ namespace MoonWorks.Input
|
||||||
AnyPressedButton = Mouse.AnyPressedButton;
|
AnyPressedButton = Mouse.AnyPressedButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var gamepad in gamepads)
|
foreach (var gamepad in Gamepads)
|
||||||
{
|
{
|
||||||
gamepad.Update();
|
gamepad.Update();
|
||||||
|
|
||||||
|
@ -65,6 +83,11 @@ namespace MoonWorks.Input
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns true if a gamepad is currently connected in the given slot.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="slot">Range: 0-3</param>
|
||||||
|
/// <returns></returns>
|
||||||
public bool GamepadExists(int slot)
|
public bool GamepadExists(int slot)
|
||||||
{
|
{
|
||||||
if (slot < 0 || slot >= MAX_GAMEPADS)
|
if (slot < 0 || slot >= MAX_GAMEPADS)
|
||||||
|
@ -72,13 +95,19 @@ namespace MoonWorks.Input
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return !gamepads[slot].IsDummy;
|
return !Gamepads[slot].IsDummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
// From 0-4
|
/// <summary>
|
||||||
|
/// Gets a gamepad associated with the given slot.
|
||||||
|
/// The first n slots are guaranteed to occupied with gamepads if they are connected.
|
||||||
|
/// If a gamepad does not exist for the given slot, a dummy object with all inputs in default state will be returned.
|
||||||
|
/// You can check if a gamepad is connected in a slot with the GamepadExists function.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="slot">Range: 0-3</param>
|
||||||
public Gamepad GetGamepad(int slot)
|
public Gamepad GetGamepad(int slot)
|
||||||
{
|
{
|
||||||
return gamepads[slot];
|
return Gamepads[slot];
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void AddGamepad(int index)
|
internal void AddGamepad(int index)
|
||||||
|
@ -95,7 +124,7 @@ namespace MoonWorks.Input
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gamepads[slot].Register(openResult);
|
Gamepads[slot].Register(openResult);
|
||||||
System.Console.WriteLine($"Gamepad added to slot {slot}!");
|
System.Console.WriteLine($"Gamepad added to slot {slot}!");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -109,10 +138,10 @@ namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
for (int slot = 0; slot < MAX_GAMEPADS; slot += 1)
|
for (int slot = 0; slot < MAX_GAMEPADS; slot += 1)
|
||||||
{
|
{
|
||||||
if (joystickInstanceID == gamepads[slot].JoystickInstanceID)
|
if (joystickInstanceID == Gamepads[slot].JoystickInstanceID)
|
||||||
{
|
{
|
||||||
SDL.SDL_GameControllerClose(gamepads[slot].Handle);
|
SDL.SDL_GameControllerClose(Gamepads[slot].Handle);
|
||||||
gamepads[slot].Unregister();
|
Gamepads[slot].Unregister();
|
||||||
System.Console.WriteLine($"Removing gamepad from slot {slot}!");
|
System.Console.WriteLine($"Removing gamepad from slot {slot}!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
// Enum values are equivalent to the SDL Scancode value.
|
/// <summary>
|
||||||
|
/// Can be used to determine key state without a direct reference to the virtual button object.
|
||||||
|
/// Enum values are equivalent to the SDL Scancode value.
|
||||||
|
/// </summary>
|
||||||
public enum KeyCode : int
|
public enum KeyCode : int
|
||||||
{
|
{
|
||||||
Unknown = 0,
|
Unknown = 0,
|
||||||
|
|
|
@ -4,12 +4,22 @@ using SDL2;
|
||||||
|
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The keyboard input device abstraction.
|
||||||
|
/// </summary>
|
||||||
public class Keyboard
|
public class Keyboard
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// True if any button on the keyboard is active. Useful for input remapping.
|
||||||
|
/// </summary>
|
||||||
public bool AnyPressed { get; private set; }
|
public bool AnyPressed { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Contains a reference to an arbitrary KeyboardButton that was pressed this frame. Useful for input remapping.
|
||||||
|
/// </summary>
|
||||||
public KeyboardButton AnyPressedButton { get; private set; }
|
public KeyboardButton AnyPressedButton { get; private set; }
|
||||||
|
|
||||||
public IntPtr State { get; private set; }
|
internal IntPtr State { get; private set; }
|
||||||
|
|
||||||
private KeyCode[] KeyCodes;
|
private KeyCode[] KeyCodes;
|
||||||
private KeyboardButton[] Keys { get; }
|
private KeyboardButton[] Keys { get; }
|
||||||
|
@ -78,41 +88,65 @@ namespace MoonWorks.Input
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was pressed this frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsPressed(KeyCode keycode)
|
public bool IsPressed(KeyCode keycode)
|
||||||
{
|
{
|
||||||
return Keys[(int) keycode].IsPressed;
|
return Keys[(int) keycode].IsPressed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was pressed this frame and the previous frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsHeld(KeyCode keycode)
|
public bool IsHeld(KeyCode keycode)
|
||||||
{
|
{
|
||||||
return Keys[(int) keycode].IsHeld;
|
return Keys[(int) keycode].IsHeld;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was either pressed or continued to be held this frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsDown(KeyCode keycode)
|
public bool IsDown(KeyCode keycode)
|
||||||
{
|
{
|
||||||
return Keys[(int) keycode].IsDown;
|
return Keys[(int) keycode].IsDown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was let go this frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsReleased(KeyCode keycode)
|
public bool IsReleased(KeyCode keycode)
|
||||||
{
|
{
|
||||||
return Keys[(int) keycode].IsReleased;
|
return Keys[(int) keycode].IsReleased;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was not pressed this frame or the previous frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsIdle(KeyCode keycode)
|
public bool IsIdle(KeyCode keycode)
|
||||||
{
|
{
|
||||||
return Keys[(int) keycode].IsIdle;
|
return Keys[(int) keycode].IsIdle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if the button was either idle or released this frame.
|
||||||
|
/// </summary>
|
||||||
public bool IsUp(KeyCode keycode)
|
public bool IsUp(KeyCode keycode)
|
||||||
{
|
{
|
||||||
return Keys[(int) keycode].IsUp;
|
return Keys[(int) keycode].IsUp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a reference to a keyboard button object using a key code.
|
||||||
|
/// </summary>
|
||||||
public KeyboardButton Button(KeyCode keycode)
|
public KeyboardButton Button(KeyCode keycode)
|
||||||
{
|
{
|
||||||
return Keys[(int) keycode];
|
return Keys[(int) keycode];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the state of a keyboard button from a key code.
|
||||||
|
/// </summary>
|
||||||
public ButtonState ButtonState(KeyCode keycode)
|
public ButtonState ButtonState(KeyCode keycode)
|
||||||
{
|
{
|
||||||
return Keys[(int) keycode].State;
|
return Keys[(int) keycode].State;
|
||||||
|
|
|
@ -3,6 +3,9 @@ using SDL2;
|
||||||
|
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The mouse input device abstraction.
|
||||||
|
/// </summary>
|
||||||
public class Mouse
|
public class Mouse
|
||||||
{
|
{
|
||||||
public MouseButton LeftButton { get; }
|
public MouseButton LeftButton { get; }
|
||||||
|
@ -21,12 +24,23 @@ namespace MoonWorks.Input
|
||||||
internal int WheelRaw;
|
internal int WheelRaw;
|
||||||
private int previousWheelRaw = 0;
|
private int previousWheelRaw = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if any button on the keyboard is active. Useful for input remapping.
|
||||||
|
/// </summary>
|
||||||
public bool AnyPressed { get; private set; }
|
public bool AnyPressed { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Contains a reference to an arbitrary MouseButton that was pressed this frame. Useful for input remapping.
|
||||||
|
/// </summary>
|
||||||
public MouseButton AnyPressedButton { get; private set; }
|
public MouseButton AnyPressedButton { get; private set; }
|
||||||
|
|
||||||
public uint ButtonMask { get; private set; }
|
internal uint ButtonMask { get; private set; }
|
||||||
|
|
||||||
private bool relativeMode;
|
private bool relativeMode;
|
||||||
|
/// <summary>
|
||||||
|
/// If set to true, the cursor is hidden, the mouse position is constrained to the window,
|
||||||
|
/// and relative mouse motion will be reported even if the mouse is at the edge of the window.
|
||||||
|
/// </summary>
|
||||||
public bool RelativeMode
|
public bool RelativeMode
|
||||||
{
|
{
|
||||||
get => relativeMode;
|
get => relativeMode;
|
||||||
|
@ -42,6 +56,9 @@ namespace MoonWorks.Input
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool hidden;
|
private bool hidden;
|
||||||
|
/// <summary>
|
||||||
|
/// If set to true, the OS cursor will not be shown in your application window.
|
||||||
|
/// </summary>
|
||||||
public bool Hidden
|
public bool Hidden
|
||||||
{
|
{
|
||||||
get => hidden;
|
get => hidden;
|
||||||
|
@ -54,7 +71,7 @@ namespace MoonWorks.Input
|
||||||
|
|
||||||
private readonly Dictionary<MouseButtonCode, MouseButton> CodeToButton;
|
private readonly Dictionary<MouseButtonCode, MouseButton> CodeToButton;
|
||||||
|
|
||||||
public Mouse()
|
internal Mouse()
|
||||||
{
|
{
|
||||||
LeftButton = new MouseButton(this, MouseButtonCode.Left, SDL.SDL_BUTTON_LMASK);
|
LeftButton = new MouseButton(this, MouseButtonCode.Left, SDL.SDL_BUTTON_LMASK);
|
||||||
MiddleButton = new MouseButton(this, MouseButtonCode.Middle, SDL.SDL_BUTTON_MMASK);
|
MiddleButton = new MouseButton(this, MouseButtonCode.Middle, SDL.SDL_BUTTON_MMASK);
|
||||||
|
@ -99,11 +116,17 @@ namespace MoonWorks.Input
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a button from the mouse given a MouseButtonCode.
|
||||||
|
/// </summary>
|
||||||
public MouseButton Button(MouseButtonCode buttonCode)
|
public MouseButton Button(MouseButtonCode buttonCode)
|
||||||
{
|
{
|
||||||
return CodeToButton[buttonCode];
|
return CodeToButton[buttonCode];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a button state from a mouse button corresponding to the given MouseButtonCode.
|
||||||
|
/// </summary>
|
||||||
public ButtonState ButtonState(MouseButtonCode buttonCode)
|
public ButtonState ButtonState(MouseButtonCode buttonCode)
|
||||||
{
|
{
|
||||||
return CodeToButton[buttonCode].State;
|
return CodeToButton[buttonCode].State;
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Can be used to determine virtual mouse button state without a direct reference to the button object.
|
||||||
|
/// </summary>
|
||||||
public enum MouseButtonCode
|
public enum MouseButtonCode
|
||||||
{
|
{
|
||||||
Left,
|
Left,
|
||||||
|
|
|
@ -3,6 +3,9 @@ using SDL2;
|
||||||
|
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a trigger input on a gamepad.
|
||||||
|
/// </summary>
|
||||||
public class Trigger
|
public class Trigger
|
||||||
{
|
{
|
||||||
public Gamepad Parent { get; }
|
public Gamepad Parent { get; }
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
// Enum values correspond to SDL GameControllerAxis
|
/// <summary>
|
||||||
|
/// Can be used to determine trigger state or trigger virtual button state without direct reference to the trigger object or virtual button object.
|
||||||
|
/// Enum values correspond to SDL_GameControllerAxis.
|
||||||
|
/// </summary>
|
||||||
public enum TriggerCode
|
public enum TriggerCode
|
||||||
{
|
{
|
||||||
Left = 4,
|
Left = 4,
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// VirtualButtons map inputs to binary inputs, like a trigger threshold or joystick axis threshold.
|
||||||
|
/// </summary>
|
||||||
public abstract class VirtualButton
|
public abstract class VirtualButton
|
||||||
{
|
{
|
||||||
public ButtonState State { get; protected set; }
|
public ButtonState State { get; protected set; }
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A virtual button corresponding to a direction on a joystick.
|
||||||
|
/// If the axis value exceeds the threshold, it will be treated as a press.
|
||||||
|
/// </summary>
|
||||||
public class AxisButton : VirtualButton
|
public class AxisButton : VirtualButton
|
||||||
{
|
{
|
||||||
public Axis Parent { get; }
|
public Axis Parent { get; }
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A dummy button that can never be pressed. Used for the dummy gamepad.
|
||||||
|
/// </summary>
|
||||||
public class EmptyButton : VirtualButton
|
public class EmptyButton : VirtualButton
|
||||||
{
|
{
|
||||||
internal override bool CheckPressed()
|
internal override bool CheckPressed()
|
||||||
|
|
|
@ -2,6 +2,9 @@ using SDL2;
|
||||||
|
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A virtual button corresponding to a gamepad button.
|
||||||
|
/// </summary>
|
||||||
public class GamepadButton : VirtualButton
|
public class GamepadButton : VirtualButton
|
||||||
{
|
{
|
||||||
public Gamepad Parent { get; }
|
public Gamepad Parent { get; }
|
||||||
|
|
|
@ -2,6 +2,9 @@ using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A virtual button corresponding to a keyboard button.
|
||||||
|
/// </summary>
|
||||||
public class KeyboardButton : VirtualButton
|
public class KeyboardButton : VirtualButton
|
||||||
{
|
{
|
||||||
Keyboard Parent;
|
Keyboard Parent;
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A virtual button corresponding to a mouse button.
|
||||||
|
/// </summary>
|
||||||
public class MouseButton : VirtualButton
|
public class MouseButton : VirtualButton
|
||||||
{
|
{
|
||||||
Mouse Parent;
|
Mouse Parent;
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
namespace MoonWorks.Input
|
namespace MoonWorks.Input
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A virtual button corresponding to a trigger on a gamepad.
|
||||||
|
/// If the trigger value exceeds the threshold, it will be treated as a press.
|
||||||
|
/// </summary>
|
||||||
public class TriggerButton : VirtualButton
|
public class TriggerButton : VirtualButton
|
||||||
{
|
{
|
||||||
public Trigger Parent { get; }
|
public Trigger Parent { get; }
|
||||||
|
|
|
@ -5,6 +5,11 @@ using SDL2;
|
||||||
|
|
||||||
namespace MoonWorks
|
namespace MoonWorks
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a window in the client operating system.
|
||||||
|
/// Every Game has a MainWindow automatically.
|
||||||
|
/// You can create dditional Windows if you desire. They must be Claimed by the GraphicsDevice to be rendered to.
|
||||||
|
/// </summary>
|
||||||
public class Window : IDisposable
|
public class Window : IDisposable
|
||||||
{
|
{
|
||||||
internal IntPtr Handle { get; }
|
internal IntPtr Handle { get; }
|
||||||
|
|
Loading…
Reference in New Issue