51 lines
1.0 KiB
C++
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;
|
|
}; |