1
0
Fork 0

include/Spectre/Input/InputEvent.h: Move MouseButton::Type to Mouse class.

This commit is contained in:
Henrik Hautakoski 2020-01-24 17:23:44 +01:00
parent b2ca926a00
commit 762d26f368
No known key found for this signature in database
GPG key ID: 96765B12FEAC4745
5 changed files with 35 additions and 37 deletions

View file

@ -4,22 +4,10 @@
#include <string>
#include <vector>
#include <Spectre/Input/Mouse.h>
namespace sp {
namespace MouseButton {
enum Type {
Unknown,
Left,
Right,
Middle,
Button1,
Button2,
NUM_MBUTTONS,
};
};
namespace Key {
enum Type {
@ -130,7 +118,7 @@ typedef struct InputEvent
};
struct MouseButtonEvent {
MouseButton::Type button;
Mouse::Button button;
bool pressed; /* true if pressed, false if released. */
std::string getName() const;

View file

@ -4,13 +4,23 @@
#include <string>
#include <Spectre/Math/Vector2.h>
#include "InputEvent.h"
#include "InputDevice.h"
namespace sp {
class Mouse : public InputDevice
{
public :
enum Button {
Unknown,
Left,
Right,
Middle,
Button1,
Button2,
NUM_MBUTTONS
};
public :
virtual ~Mouse();
@ -19,11 +29,11 @@ public :
//virtual Vector2i getPositionAbs() const = 0;
virtual bool isButtonDown(MouseButton::Type button) const = 0;
virtual bool isButtonDown(Button button) const = 0;
static std::string getButtonName(MouseButton::Type button);
static std::string getButtonName(Button button);
};
} // namespace sp
}; // namespace sp
#endif /* SPECTRE_INPUT_MOUSE_H */

View file

@ -7,15 +7,15 @@ Mouse::~Mouse()
{
}
std::string Mouse::getButtonName(MouseButton::Type button)
std::string Mouse::getButtonName(Button button)
{
switch(button) {
case MouseButton::Button1 : return "Button1";
case MouseButton::Button2 : return "Button2";
case MouseButton::Left : return "Left";
case MouseButton::Right : return "Right";
case MouseButton::Middle : return "Middle";
case MouseButton::Unknown :
case Button::Button1 : return "Button1";
case Button::Button2 : return "Button2";
case Button::Left : return "Left";
case Button::Right : return "Right";
case Button::Middle : return "Middle";
case Button::Unknown :
default:
return "Unknown";
}

View file

@ -29,7 +29,7 @@ static RECT GetClientArea(HWND hwnd) {
void Win32Mouse::init()
{
memset(m_state, 0, MouseButton::NUM_MBUTTONS);
memset(m_state, 0, Mouse::Button::NUM_MBUTTONS);
m_tracked = false;
}
@ -38,7 +38,7 @@ Vector2f Win32Mouse::getPosition() const
return m_position;
}
bool Win32Mouse::isButtonDown(MouseButton::Type button) const
bool Win32Mouse::isButtonDown(Mouse::Button button) const
{
return m_state[button];
}
@ -53,26 +53,26 @@ void Win32Mouse::update(InputModule *input)
if (msg.message == WM_LBUTTONDOWN || msg.message == WM_LBUTTONUP) {
InputEvent event(InputEvent::MouseButton);
event.mouseButton.button = MouseButton::Left;
event.mouseButton.button = Mouse::Button::Left;
event.mouseButton.pressed = msg.message == WM_LBUTTONDOWN;
m_state[MouseButton::Left] = event.mouseButton.pressed;
m_state[Mouse::Button::Left] = event.mouseButton.pressed;
input->postInputEvent(event);
} else if (msg.message == WM_RBUTTONDOWN || msg.message == WM_RBUTTONUP) {
InputEvent event(InputEvent::MouseButton);
event.mouseButton.button = MouseButton::Right;
event.mouseButton.button = Mouse::Button::Right;
event.mouseButton.pressed = msg.message == WM_RBUTTONDOWN;
m_state[MouseButton::Right] = event.mouseButton.pressed;
m_state[Mouse::Button::Right] = event.mouseButton.pressed;
input->postInputEvent(event);
} else if (msg.message == WM_MBUTTONDOWN || msg.message == WM_MBUTTONUP) {
InputEvent event(InputEvent::MouseButton);
event.mouseButton.button = MouseButton::Middle;
event.mouseButton.button = Mouse::Button::Middle;
event.mouseButton.pressed = msg.message == WM_MBUTTONDOWN;
m_state[MouseButton::Middle] = event.mouseButton.pressed;
m_state[Mouse::Button::Middle] = event.mouseButton.pressed;
input->postInputEvent(event);
} else if (msg.message == WM_XBUTTONDOWN || msg.message == WM_XBUTTONUP) {
@ -80,10 +80,10 @@ void Win32Mouse::update(InputModule *input)
int btn = GET_XBUTTON_WPARAM(msg.wParam);
InputEvent event(InputEvent::MouseButton);
event.mouseButton.button = btn == XBUTTON1 ? MouseButton::Button1 : MouseButton::Button2;
event.mouseButton.button = btn == XBUTTON1 ? Mouse::Button::Button1 : Mouse::Button::Button2;
event.mouseButton.pressed = msg.message == WM_XBUTTONDOWN;
m_state[MouseButton::Button1] = event.mouseButton.pressed;
m_state[Mouse::Button::Button1] = event.mouseButton.pressed;
input->postInputEvent(event);
} else if (msg.message == WM_MOUSEMOVE) {

View file

@ -17,7 +17,7 @@ public :
// Get mouse position
virtual Vector2f getPosition() const;
virtual bool isButtonDown(MouseButton::Type button) const;
virtual bool isButtonDown(Mouse::Button button) const;
static bool handleMessage(MSG message);
@ -28,7 +28,7 @@ protected :
protected :
Vector2f m_position;
bool m_state[MouseButton::NUM_MBUTTONS];
bool m_state[Mouse::Button::NUM_MBUTTONS];
bool m_tracked;
};