Implement RawInput (WIP)

This commit is contained in:
2022-03-22 19:39:08 +02:00
parent e8c50ec442
commit 44e726ceca
4 changed files with 153 additions and 1 deletions

View File

@@ -174,7 +174,9 @@ void InputSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* m
void Mouse::OnMouseMoved(const Float2& newPosition)
{
_prevState.MousePosition = newPosition;
_prevState.MouseWasReset = true;
_state.MousePosition = newPosition;
_state.MouseWasReset = true;
}
void Mouse::OnMouseDown(const Float2& position, const MouseButton button, Window* target)
@@ -221,6 +223,14 @@ void Mouse::OnMouseMove(const Float2& position, Window* target)
e.MouseData.Position = position;
}
void Mouse::OnMouseMoveDelta(const Vector2& delta, Window* target)
{
Event& e = _queue.AddOne();
e.Type = EventType::MouseMoveDelta;
e.Target = target;
e.MouseData.Position = delta;
}
void Mouse::OnMouseLeave(Window* target)
{
Event& e = _queue.AddOne();
@@ -245,6 +255,7 @@ void Mouse::ResetState()
_state.Clear();
}
#include "Engine/Core/Log.h"
bool Mouse::Update(EventQueue& queue)
{
// Move the current state to the previous
@@ -256,6 +267,7 @@ bool Mouse::Update(EventQueue& queue)
// Handle events
_state.MouseWheelDelta = 0;
_state.MouseDelta = Vector2::Zero;
for (int32 i = 0; i < _queue.Count(); i++)
{
const Event& e = _queue[i];
@@ -286,6 +298,11 @@ bool Mouse::Update(EventQueue& queue)
_state.MousePosition = e.MouseData.Position;
break;
}
case EventType::MouseMoveDelta:
{
_state.MouseDelta += e.MouseData.Position;
break;
}
case EventType::MouseLeave:
{
break;