Files
CDAG/Research/core/Controls.h

51 lines
1.0 KiB
C++

#pragma once
#include <vector>
class Camera;
struct GLFWwindow;
class Controls {
public:
enum State { RUNNING, PAUSED, EXIT };
static void Create(GLFWwindow* window, bool fullscreen);
static void Destroy();
static Controls* Instance();
void Run();
State GetState();
protected:
private:
Controls(GLFWwindow* window, bool fullscreen);
~Controls();
void ListenToMouse();
void ListenToKeys();
bool CheckKey(int key, bool lock = false);
static void Scroll(GLFWwindow* window, double xoffset, double yoffset);
static Controls* mInstance;
GLFWwindow* mWindow;
Camera* mCamera;
bool mDragMouse;
State mState;
bool mFullScreen;
std::vector<bool> mLocked; // input is locked for pressed keys to prevent continuous event firing
double mMouseX;
double mMouseY;
double mOldMouseX;
double mOldMouseY;
float mLastTime;
float mCurrentTime;
float mDeltaTime;
static const float RUNNINGSPEEDRATIO;
static const float CRAWLSPEEDRATIO;
static const float SPEEDINCREASERATIO;
};