include/Spectre/Input/InputEvent.h: Move MouseButton::Type to Mouse class.
This commit is contained in:
parent
b2ca926a00
commit
762d26f368
5 changed files with 35 additions and 37 deletions
|
|
@ -4,22 +4,10 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <Spectre/Input/Mouse.h>
|
||||||
|
|
||||||
namespace sp {
|
namespace sp {
|
||||||
|
|
||||||
namespace MouseButton {
|
|
||||||
|
|
||||||
enum Type {
|
|
||||||
Unknown,
|
|
||||||
Left,
|
|
||||||
Right,
|
|
||||||
Middle,
|
|
||||||
Button1,
|
|
||||||
Button2,
|
|
||||||
NUM_MBUTTONS,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
namespace Key {
|
namespace Key {
|
||||||
|
|
||||||
enum Type {
|
enum Type {
|
||||||
|
|
@ -130,7 +118,7 @@ typedef struct InputEvent
|
||||||
};
|
};
|
||||||
|
|
||||||
struct MouseButtonEvent {
|
struct MouseButtonEvent {
|
||||||
MouseButton::Type button;
|
Mouse::Button button;
|
||||||
bool pressed; /* true if pressed, false if released. */
|
bool pressed; /* true if pressed, false if released. */
|
||||||
|
|
||||||
std::string getName() const;
|
std::string getName() const;
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,23 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <Spectre/Math/Vector2.h>
|
#include <Spectre/Math/Vector2.h>
|
||||||
#include "InputEvent.h"
|
|
||||||
#include "InputDevice.h"
|
#include "InputDevice.h"
|
||||||
|
|
||||||
namespace sp {
|
namespace sp {
|
||||||
|
|
||||||
class Mouse : public InputDevice
|
class Mouse : public InputDevice
|
||||||
{
|
{
|
||||||
|
public :
|
||||||
|
enum Button {
|
||||||
|
Unknown,
|
||||||
|
Left,
|
||||||
|
Right,
|
||||||
|
Middle,
|
||||||
|
Button1,
|
||||||
|
Button2,
|
||||||
|
NUM_MBUTTONS
|
||||||
|
};
|
||||||
|
|
||||||
public :
|
public :
|
||||||
virtual ~Mouse();
|
virtual ~Mouse();
|
||||||
|
|
||||||
|
|
@ -19,11 +29,11 @@ public :
|
||||||
|
|
||||||
//virtual Vector2i getPositionAbs() const = 0;
|
//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 */
|
#endif /* SPECTRE_INPUT_MOUSE_H */
|
||||||
|
|
|
||||||
|
|
@ -7,15 +7,15 @@ Mouse::~Mouse()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Mouse::getButtonName(MouseButton::Type button)
|
std::string Mouse::getButtonName(Button button)
|
||||||
{
|
{
|
||||||
switch(button) {
|
switch(button) {
|
||||||
case MouseButton::Button1 : return "Button1";
|
case Button::Button1 : return "Button1";
|
||||||
case MouseButton::Button2 : return "Button2";
|
case Button::Button2 : return "Button2";
|
||||||
case MouseButton::Left : return "Left";
|
case Button::Left : return "Left";
|
||||||
case MouseButton::Right : return "Right";
|
case Button::Right : return "Right";
|
||||||
case MouseButton::Middle : return "Middle";
|
case Button::Middle : return "Middle";
|
||||||
case MouseButton::Unknown :
|
case Button::Unknown :
|
||||||
default:
|
default:
|
||||||
return "Unknown";
|
return "Unknown";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ static RECT GetClientArea(HWND hwnd) {
|
||||||
|
|
||||||
void Win32Mouse::init()
|
void Win32Mouse::init()
|
||||||
{
|
{
|
||||||
memset(m_state, 0, MouseButton::NUM_MBUTTONS);
|
memset(m_state, 0, Mouse::Button::NUM_MBUTTONS);
|
||||||
m_tracked = false;
|
m_tracked = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -38,7 +38,7 @@ Vector2f Win32Mouse::getPosition() const
|
||||||
return m_position;
|
return m_position;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Win32Mouse::isButtonDown(MouseButton::Type button) const
|
bool Win32Mouse::isButtonDown(Mouse::Button button) const
|
||||||
{
|
{
|
||||||
return m_state[button];
|
return m_state[button];
|
||||||
}
|
}
|
||||||
|
|
@ -53,26 +53,26 @@ void Win32Mouse::update(InputModule *input)
|
||||||
if (msg.message == WM_LBUTTONDOWN || msg.message == WM_LBUTTONUP) {
|
if (msg.message == WM_LBUTTONDOWN || msg.message == WM_LBUTTONUP) {
|
||||||
InputEvent event(InputEvent::MouseButton);
|
InputEvent event(InputEvent::MouseButton);
|
||||||
|
|
||||||
event.mouseButton.button = MouseButton::Left;
|
event.mouseButton.button = Mouse::Button::Left;
|
||||||
event.mouseButton.pressed = msg.message == WM_LBUTTONDOWN;
|
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);
|
input->postInputEvent(event);
|
||||||
} else if (msg.message == WM_RBUTTONDOWN || msg.message == WM_RBUTTONUP) {
|
} else if (msg.message == WM_RBUTTONDOWN || msg.message == WM_RBUTTONUP) {
|
||||||
InputEvent event(InputEvent::MouseButton);
|
InputEvent event(InputEvent::MouseButton);
|
||||||
|
|
||||||
event.mouseButton.button = MouseButton::Right;
|
event.mouseButton.button = Mouse::Button::Right;
|
||||||
event.mouseButton.pressed = msg.message == WM_RBUTTONDOWN;
|
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);
|
input->postInputEvent(event);
|
||||||
} else if (msg.message == WM_MBUTTONDOWN || msg.message == WM_MBUTTONUP) {
|
} else if (msg.message == WM_MBUTTONDOWN || msg.message == WM_MBUTTONUP) {
|
||||||
InputEvent event(InputEvent::MouseButton);
|
InputEvent event(InputEvent::MouseButton);
|
||||||
|
|
||||||
event.mouseButton.button = MouseButton::Middle;
|
event.mouseButton.button = Mouse::Button::Middle;
|
||||||
event.mouseButton.pressed = msg.message == WM_MBUTTONDOWN;
|
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);
|
input->postInputEvent(event);
|
||||||
|
|
||||||
} else if (msg.message == WM_XBUTTONDOWN || msg.message == WM_XBUTTONUP) {
|
} 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);
|
int btn = GET_XBUTTON_WPARAM(msg.wParam);
|
||||||
InputEvent event(InputEvent::MouseButton);
|
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;
|
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);
|
input->postInputEvent(event);
|
||||||
|
|
||||||
} else if (msg.message == WM_MOUSEMOVE) {
|
} else if (msg.message == WM_MOUSEMOVE) {
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ public :
|
||||||
// Get mouse position
|
// Get mouse position
|
||||||
virtual Vector2f getPosition() const;
|
virtual Vector2f getPosition() const;
|
||||||
|
|
||||||
virtual bool isButtonDown(MouseButton::Type button) const;
|
virtual bool isButtonDown(Mouse::Button button) const;
|
||||||
|
|
||||||
static bool handleMessage(MSG message);
|
static bool handleMessage(MSG message);
|
||||||
|
|
||||||
|
|
@ -28,7 +28,7 @@ protected :
|
||||||
protected :
|
protected :
|
||||||
Vector2f m_position;
|
Vector2f m_position;
|
||||||
|
|
||||||
bool m_state[MouseButton::NUM_MBUTTONS];
|
bool m_state[Mouse::Button::NUM_MBUTTONS];
|
||||||
|
|
||||||
bool m_tracked;
|
bool m_tracked;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue