1
0
Fork 0

examples/input/InputExample: Adding support for Event based mouse movement.

This commit is contained in:
Henrik Hautakoski 2023-08-02 20:32:46 +02:00
parent 085d593b66
commit 962c18fcac
2 changed files with 35 additions and 1 deletions

View file

@ -2,6 +2,8 @@
#include <Spectre/Input/InputModule.h>
#include <Spectre/Input/Keyboard.h>
#include <Spectre/Input/Mouse.h>
#include <Spectre/System/MessageHandler.h>
#include <Spectre/System/Log.h>
#include <Spectre/Graphics/BatchRenderer2D.h>
#include <Spectre/System/Log.h>
@ -11,6 +13,8 @@ void InputExample::init()
{
m_renderer = new sp::BatchRenderer2D();
getMessageHandler()->registerListener(this);
m_tux_texture.create("assets/textures/tux.png");
m_kb_sprite.setTexture(m_tux_texture);
@ -22,6 +26,13 @@ void InputExample::init()
m_mouse_sprite.setSize(sp::vec2f(100, 100));
m_mouse_sprite.setPosition(sp::vec2f(50, 50));
m_mouse_event_sprite.setTexture(m_tux_texture);
m_mouse_event_sprite.setColor(sp::Color::Blue);
m_mouse_event_sprite.setSize(sp::vec2f(100, 100));
m_mouse_event_sprite.setPosition(sp::vec2f(50, 50));
m_right_mouse_down = false;
m_renderer->setCamera(m_camera);
}
@ -50,6 +61,20 @@ void InputExample::update(double dt)
}
}
void InputExample::onSizeChanged(sp::Display* display, int width, int height)
{
}
void InputExample::onEvent(const sp::Event& event)
{
if (event.type == event.MouseButton && event.mouseButton.button == sp::Mouse::Right) {
m_right_mouse_down = event.mouseButton.pressed;
} else if (event.type == event.MouseMove && m_right_mouse_down) {
m_mouse_event_sprite.setPosition(event.mouseMove.x, event.mouseMove.y);
}
}
void InputExample::render()
{
sp::Graphics* g = getGraphics();
@ -58,6 +83,7 @@ void InputExample::render()
m_renderer->begin();
m_renderer->submit(m_mouse_sprite);
m_renderer->submit(m_mouse_event_sprite);
m_renderer->submit(m_kb_sprite);
m_renderer->render();