Skip to content

Instantly share code, notes, and snippets.

@MaximovInk
Created July 27, 2019 15:31
Show Gist options
  • Save MaximovInk/b1373218ac1f871fec40c5d0a4dfb905 to your computer and use it in GitHub Desktop.
Save MaximovInk/b1373218ac1f871fec40c5d0a4dfb905 to your computer and use it in GitHub Desktop.
Openk Input class like unity
/*
Usage:
Call Init() once on create
Call Update() in end of UpdateFrame()
*/
public static class Input
{
private static GameWindow gameWindow;
private static KeyboardState keyboardState, lastKeyboardState;
private static MouseState mouseState, lastMouseState;
public static int MouseX => mouseState.X;
public static int MouseY => mouseState.Y;
public static float MouseScrollDelta => mouseState.WheelPrecise - lastMouseState.WheelPrecise;
public static int MouseXDelta => mouseState.X - lastMouseState.X;
public static int MouseYDelta => mouseState.Y - lastMouseState.Y;
public static void Init(GameWindow window)
{
gameWindow = window;
if (gameWindow != null)
{
gameWindow.KeyUp += KeyUp;
gameWindow.KeyDown += KeyDown;
gameWindow.MouseDown += MouseDown;
gameWindow.MouseUp += MouseUp;
}
}
public static void Update()
{
lastKeyboardState = keyboardState;
lastMouseState = mouseState;
mouseState = Mouse.GetState();
keyboardState = Keyboard.GetState();
}
private static void KeyDown(object sender, KeyboardKeyEventArgs e) =>
keyboardState = e.Keyboard;
private static void KeyUp(object sender, KeyboardKeyEventArgs e) =>
keyboardState = e.Keyboard;
private static void MouseDown(object sender, MouseButtonEventArgs args) =>
mouseState = args.Mouse;
private static void MouseUp(object sender, MouseButtonEventArgs args) =>
mouseState = args.Mouse;
public static bool GetKey(Key key) => keyboardState[key];
public static bool GetKeyDown(Key key) =>
keyboardState[key] && (keyboardState[key] != lastKeyboardState[key]);
public static bool GetKeyUp(Key key) =>
lastKeyboardState[key] && (keyboardState[key] != lastKeyboardState[key]);
public static bool GetMouseButton(MouseButton button) =>
mouseState[button];
public static bool GetMouseButtonDown(MouseButton button) =>
mouseState[button] && (mouseState[button] != lastMouseState[button]);
public static bool GetMouseButtonUp(MouseButton button) =>
lastMouseState[button] && (mouseState[button] != lastMouseState[button]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment