OGL Engine 1.2.0-dev
Loading...
Searching...
No Matches
input.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include <glad/glad.h>
8#include <glfw/glfw3.h>
9#include <glm/glm.hpp>
10
11#include <functional>
12#include <string>
13#include <unordered_map>
14#include <vector>
15
16namespace Engine::Input {
27
33 struct KeyState {
37 float duration = 0.0f;
38
41 bool IsHeld(float durationInSeconds = 0.25f) { return IsPressed() && duration >= durationInSeconds; }
44 };
45
53 private:
55 static GLFWwindow* mWindow;
57 static std::unordered_map<int, KeyState> mKeys;
59 static std::unordered_map<int, KeyState> mPreviousKeys;
61 static std::unordered_map<int, KeyState> mMouseButtons;
63 static std::unordered_map<int, KeyState> mPreviousMouseButtons;
65 static float mMouseScrollValue;
66
74 static void MouseScrollCallback(GLFWwindow* window, double xoffset, double yoffset);
75 public:
76 // Supprime ctor et dtor pour empêcher les erreurs d'inattention à l'utilisation.
77 // C'est une classe full statique donc on peut se permettre ça.
78 InputManager() = delete;
79 ~InputManager() = delete;
80
87 static void Init(GLFWwindow* window);
93 static void Update(float deltaTime);
98 static void Reset();
99
106 static KeyState GetKey(int key);
112 static float GetMouseScroll();
113
119 static glm::vec2 GetMousePosition();
126 static KeyState GetMouseButton(int button);
127 };
128}
static KeyState GetMouseButton(int button)
Renvoie le KeyState associé au bouton de souris demandé
Definition input.cpp:75
static KeyState GetKey(int key)
Renvoie le KeyState associé à une touche donnée.
Definition input.cpp:60
static glm::vec2 GetMousePosition()
Renvoie la position de la souris (en pixels écran)
Definition input.cpp:68
static void Reset()
Remise à zéro des états "continus" en fin de frame (scroll souris)
Definition input.cpp:56
static float GetMouseScroll()
Renvoie la valeur du scroll souris sur l'axe Y.
Definition input.cpp:64
static void Update(float deltaTime)
Mise à jour des états de touches (map KeyState) et des durées d'états.
Definition input.cpp:22
static void Init(GLFWwindow *window)
Initialise l'InputManager.
Definition input.cpp:17
Definition input.cpp:3
InputState
Permet de donner un nom aux différents états dans lesquels peut se trouver une touche.
Definition input.hpp:20
@ JustReleased
Definition input.hpp:24
@ None
Definition input.hpp:21
@ JustPressed
Definition input.hpp:22
@ Pressed
Definition input.hpp:23
@ Released
Definition input.hpp:25
Stocke l'état d'une touche et la durée passée dans l'état.
Definition input.hpp:33
bool IsPressed()
Definition input.hpp:39
bool IsReleased()
Definition input.hpp:42
bool IsHeld(float durationInSeconds=0.25f)
Definition input.hpp:41
float duration
Temps passé dans l'état actuel en secondes.
Definition input.hpp:37
bool IsJustPressed()
Definition input.hpp:40
InputState state
Etat de la touche.
Definition input.hpp:35
bool IsJustReleased()
Definition input.hpp:43