Elevate Engine 1
Loading...
Searching...
No Matches
Input.h
Go to the documentation of this file.
1#pragma once
2
3// =======================================
4// Just here for the ease of impl. for the user (prevent multiple useless imports and a single .h import
7// =======================================
8
12
13#include <glm/glm.hpp>
14
15#define KEYBOARD_SIZE 512;
16#define MOUSE_SIZE 16;
17
18// In order of execution when a key / button is pressed
19#define EE_STATE_RELEASED 0
20#define EE_STATE_DOWN 1 // The instant moment when a key is pressed
21#define EE_STATE_PRESSED 2
22#define EE_STATE_UP 3 // The instant moment when a key is released
23
24namespace Elevate {
25 class Input
26 {
27 friend class Application;
28 public:
29 // Keyboard
30 inline static bool IsKeyDown(int keycode) { return s_Instance->inputBuffer.IsKeyDown(keycode); }
31 inline static bool IsKeyDown(char key) { return IsKeyDown((int) toupper(key)); }
32
33 inline static bool IsKeyUp(int keycode) { return s_Instance->inputBuffer.IsKeyUp(keycode); }
34 inline static bool IsKeyUp(char key) { return IsKeyUp((int)toupper(key)); }
35
36 inline static bool IsKeyPressed(int keycode) { return s_Instance->inputBuffer.IsKeyPressed(keycode); }
37 inline static bool IsKeyPressed(char key) { return IsKeyPressed((int)toupper(key)); }
38 // Mouse
39 inline static bool IsMouseButtonDown(int button) { return s_Instance->inputBuffer.IsMouseButtonDown(button); }
40 inline static bool IsMouseButtonPressed(int button) { return s_Instance->inputBuffer.IsMouseButtonPressed(button); }
41 inline static bool IsMouseButtonUp(int button) { return s_Instance->inputBuffer.IsMouseButtonUp(button); }
42
43 inline static glm::vec2 GetMousePosition() { return s_Instance->GetMousePositionImpl(); }
44 inline static float GetMouseX() { return GetMousePosition().x; }
45 inline static float GetMouseY() { return GetMousePosition().y; }
46
47 protected:
48 // Mouse Impl
49 virtual glm::vec2 GetMousePositionImpl() = 0;
50
51 // Has to be called before polling events to reset all the intermediates states of the keys (down or up)
52 inline static void ManageMidStates() { s_Instance->inputBuffer.ManageMidSates(); }
53 inline static void ResetAllStates() { s_Instance->inputBuffer.ResetAllStates(); }
54
56 // Keyboard
57 inline static void OnKeyPressedEvent(KeyPressedEvent& e)
58 {
59 s_Instance->inputBuffer.SetKeyPressed(e.GetKeyCode(), e.GetRepeatCount());
60 }
61 inline static void OnKeyReleasedEvent(KeyReleasedEvent& e)
62 {
63 s_Instance->inputBuffer.SetKeyReleased(e.GetKeyCode());
64 }
65 // Mouse
67 {
68 s_Instance->inputBuffer.SetMouseButtonPressed(e.GetMouseButton());
69 }
71 {
72 s_Instance->inputBuffer.SetMouseButtonReleased(e.GetMouseButton());
73 }
74
75 private:
76 InputBuffer inputBuffer;
77 static Input* s_Instance;
78 };
79}
void SetKeyReleased(int keycode)
bool IsKeyPressed(int keycode)
Getter.
void SetKeyPressed(int keycode, int repeatCount)
Setter.
void SetMouseButtonReleased(int mouseButtonCode)
bool IsKeyUp(int keycode)
bool IsKeyDown(int keycode)
bool IsMouseButtonPressed(int mouseButtonCode)
void SetMouseButtonPressed(int mouseButtonCode)
bool IsMouseButtonUp(int mouseButtonCode)
bool IsMouseButtonDown(int mouseButtonCode)
static void OnKeyPressedEvent(KeyPressedEvent &e)
Managed Callbacks // Could be used to simulate inputs to an app by sending events.
Definition Input.h:57
static void OnMouseButtonReleasedEvent(MouseButtonReleasedEvent &e)
Definition Input.h:70
static bool IsKeyUp(char key)
Definition Input.h:34
static bool IsMouseButtonPressed(int button)
Definition Input.h:40
static bool IsMouseButtonUp(int button)
Definition Input.h:41
static void OnKeyReleasedEvent(KeyReleasedEvent &e)
Definition Input.h:61
static void ManageMidStates()
Definition Input.h:52
static bool IsMouseButtonDown(int button)
Definition Input.h:39
static float GetMouseX()
Definition Input.h:44
static float GetMouseY()
Definition Input.h:45
static bool IsKeyPressed(char key)
Definition Input.h:37
virtual glm::vec2 GetMousePositionImpl()=0
static glm::vec2 GetMousePosition()
Definition Input.h:43
static bool IsKeyPressed(int keycode)
Definition Input.h:36
static bool IsKeyUp(int keycode)
Definition Input.h:33
static void ResetAllStates()
Definition Input.h:53
static bool IsKeyDown(char key)
Definition Input.h:31
static void OnMouseButtonPressedEvent(MouseButtonPressedEvent &e)
Definition Input.h:66
static bool IsKeyDown(int keycode)
Definition Input.h:30
int GetKeyCode() const
Definition KeyEvent.h:10
int GetRepeatCount() const
Definition KeyEvent.h:26