- First commit to gitea
This commit is contained in:
72
GUIMouse.cpp
Normal file
72
GUIMouse.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
#include "GUIMouse.h"
|
||||
|
||||
#include "application.h"
|
||||
|
||||
namespace GUIMouse
|
||||
{
|
||||
Vector2 position {0, 0};
|
||||
Vector2 delta {0, 0};
|
||||
Vector2 slowDelta {0, 0};
|
||||
Vector2 wheel {0, 0};
|
||||
ButtonState buttons[3] {ButtonState::Released, ButtonState::Released, ButtonState::Released};
|
||||
Gesture gesture {};
|
||||
|
||||
Vector2 slowAccum {0, 0};
|
||||
|
||||
void ReceiveMouseUpEvent(const Button button)
|
||||
{
|
||||
buttons[button] = ButtonState::Up;
|
||||
Application::NeedsUpdate();
|
||||
}
|
||||
|
||||
void ReceiveMouseDownEvent(const Button button)
|
||||
{
|
||||
buttons[button] = ButtonState::Down;
|
||||
Application::NeedsUpdate();
|
||||
}
|
||||
|
||||
void ReceiveMouseMoveEvent(const float x, const float y)
|
||||
{
|
||||
delta = {x-position.x, y-position.y};
|
||||
slowAccum += delta * 0.2f;
|
||||
if (slowAccum.x >= 1 or slowAccum.x <= -1) {
|
||||
slowDelta.x = int(slowAccum.x);
|
||||
slowAccum.x = slowAccum.x - int(slowAccum.x);
|
||||
}
|
||||
if (slowAccum.y >= 1 or slowAccum.y <= -1) {
|
||||
slowDelta.y = int(slowAccum.y);
|
||||
slowAccum.y = slowAccum.y - int(slowAccum.y);
|
||||
}
|
||||
position = Vector2(x, y);
|
||||
Application::NeedsUpdate();
|
||||
}
|
||||
|
||||
void ReceiveMouseWheelEvent(const float x, const float y)
|
||||
{
|
||||
wheel = Vector2(x, y);
|
||||
Application::NeedsUpdate();
|
||||
}
|
||||
|
||||
void ReceiveMultigestureEvent(const float theta, const float dist, const int numFingers)
|
||||
{
|
||||
gesture.theta = theta;
|
||||
gesture.dist = dist;
|
||||
gesture.numFingers = numFingers;
|
||||
Application::NeedsUpdate();
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (buttons[i] == ButtonState::Down) {
|
||||
buttons[i] = ButtonState::Pressed;
|
||||
} else if (buttons[i] == ButtonState::Up) {
|
||||
buttons[i] = ButtonState::Released;
|
||||
}
|
||||
}
|
||||
wheel = {0,0};
|
||||
delta = {0,0};
|
||||
slowDelta = {0,0};
|
||||
gesture.theta = gesture.dist = gesture.numFingers = 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user