Browse Source

Add mouse offset to Input

master
Riyyi 5 years ago
parent
commit
2d648c6cee
  1. 31
      inferno/src/inferno/input.cpp
  2. 19
      inferno/src/inferno/input.h

31
inferno/src/inferno/input.cpp

@ -1,11 +1,42 @@
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
#include "inferno/application.h" #include "inferno/application.h"
#include "inferno/event/mouseevent.h"
#include "inferno/input.h" #include "inferno/input.h"
#include "inferno/window.h" #include "inferno/window.h"
namespace Inferno { namespace Inferno {
bool Input::m_firstMousePos = true;
float Input::m_xPosLast = 0.0f;
float Input::m_yPosLast = 0.0f;
float Input::m_xOffset = 0.0f;
float Input::m_yOffset = 0.0f;
void Input::update()
{
m_xOffset = 0.0f;
m_yOffset = 0.0f;
}
bool Input::onMousePosition(MousePositionEvent &e)
{
// Prevent weird jump on first cursor window enter
if(m_firstMousePos) {
m_firstMousePos = false;
m_xPosLast = e.getXPos();
m_yPosLast = e.getYPos();
}
m_xOffset = e.getXPos() - m_xPosLast;
// Reversed since y-coordinates range from bottom to top
m_yOffset = m_yPosLast - e.getYPos();
m_xPosLast = e.getXPos();
m_yPosLast = e.getYPos();
return true;
}
bool Input::isKeyPressed(int key) bool Input::isKeyPressed(int key)
{ {
GLFWwindow* w = Application::get().getWindow().getWindow(); GLFWwindow* w = Application::get().getWindow().getWindow();

19
inferno/src/inferno/input.h

@ -1,20 +1,35 @@
#ifndef INPUT_H #ifndef INPUT_H
#define INPUT_H #define INPUT_H
#include <utility> #include <utility> // std::pair
namespace Inferno { namespace Inferno {
class MousePositionEvent;
class Input { class Input {
public: public:
static void update();
static bool onMousePosition(MousePositionEvent &e);
static bool isKeyPressed(int key); static bool isKeyPressed(int key);
static bool isMouseButtonPressed(int button); static bool isMouseButtonPressed(int button);
static std::pair<float, float> getMousePosition(); static std::pair<float, float> getMousePosition();
static float getMouseX(); static float getMouseX();
static float getMouseY(); static float getMouseY();
static inline float getXOffset() { return m_xOffset; }
static inline float getYOffset() { return m_yOffset; }
private:
static bool m_firstMousePos;
static float m_xPosLast;
static float m_yPosLast;
static float m_xOffset;
static float m_yOffset;
}; };
} }
#endif // INPUT_H #endif // INPUT_H

Loading…
Cancel
Save