From 962c18fcaccf3f53daac36654235dd3616512391 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 2 Aug 2023 20:32:46 +0200 Subject: [PATCH] examples/input/InputExample: Adding support for Event based mouse movement. --- examples/input/InputExample.cpp | 26 ++++++++++++++++++++++++++ examples/input/InputExample.h | 10 +++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/examples/input/InputExample.cpp b/examples/input/InputExample.cpp index 0dc73e0..4820bd6 100644 --- a/examples/input/InputExample.cpp +++ b/examples/input/InputExample.cpp @@ -2,6 +2,8 @@ #include #include #include +#include +#include #include #include @@ -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(); diff --git a/examples/input/InputExample.h b/examples/input/InputExample.h index e227a8d..8c95e5d 100644 --- a/examples/input/InputExample.h +++ b/examples/input/InputExample.h @@ -5,13 +5,14 @@ #include #include #include +#include #include namespace sp { class Renderer2D; } -class InputExample : public sp::Game +class InputExample : public sp::Game, sp::EventListener { protected : @@ -21,12 +22,19 @@ protected : void render(); + void onSizeChanged(sp::Display* display, int width, int height); + + void onEvent(const sp::Event& event); + private : sp::Camera2D m_camera; sp::Renderer2D *m_renderer; sp::Sprite m_kb_sprite; sp::Sprite m_mouse_sprite; + sp::Sprite m_mouse_event_sprite; + + bool m_right_mouse_down; sp::Texture m_tux_texture; };