From 84dfc16be17d5ed9f4899034d20c5b37e967924f Mon Sep 17 00:00:00 2001 From: "arthur.jamet" Date: Wed, 16 Jun 2021 20:41:56 +0200 Subject: [PATCH] mouse event scale to new window size --- .../System/MenuControllable/MenuControllableSystem.cpp | 10 +++++----- .../System/MenuControllable/MenuControllableSystem.hpp | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sources/System/MenuControllable/MenuControllableSystem.cpp b/sources/System/MenuControllable/MenuControllableSystem.cpp index d3158774..29eee5b6 100644 --- a/sources/System/MenuControllable/MenuControllableSystem.cpp +++ b/sources/System/MenuControllable/MenuControllableSystem.cpp @@ -51,14 +51,12 @@ namespace BBM this->_currentButton->getComponent().onEvent(*this->_currentButton, this->_wal); } - bool MenuControllableSystem::_mouseOnButton(WAL::ViewEntity &entity) const + bool MenuControllableSystem::_mouseOnButton(const Vector2f &mousePos, WAL::ViewEntity &entity) const { auto &positionComponent = entity.get(); - RAY::Vector2 rayMousePos = RAYControl::Mouse::getCursorPosition(); RAY::Texture *texture = dynamic_cast(entity.get().drawable.get()); RAY2D::Text *text = dynamic_cast(entity.get().drawable.get()); Vector2f buttonPos(positionComponent.getX(), positionComponent.getY()); - Vector2f mousePos(rayMousePos.x, rayMousePos.y); Vector2f dimensions; WAL::Entity *newButton = nullptr; @@ -77,7 +75,9 @@ namespace BBM void MenuControllableSystem::onSelfUpdate() { - + RAY::Vector2 rayMousePos = RAYControl::Mouse::getCursorPosition(); + RAY::Vector2 winSize = RAY::Window::getInstance().getDimensions(); + Vector2f relativeMousePos(rayMousePos.x * 1920 / winSize.x, rayMousePos.y * 1080 / winSize.y); auto &controllableView = this->_wal.getScene()->view(); auto &buttons = _wal.getScene()->view(); @@ -99,7 +99,7 @@ namespace BBM return; } for (auto &entity: buttons) { - if (_mouseOnButton(entity)) { + if (_mouseOnButton(relativeMousePos, entity)) { if (this->_currentButton) this->_currentButton->getComponent().onEvent(*this->_currentButton, this->_wal); this->_currentButton = &(*entity); diff --git a/sources/System/MenuControllable/MenuControllableSystem.hpp b/sources/System/MenuControllable/MenuControllableSystem.hpp index 67254369..45e7c8fb 100644 --- a/sources/System/MenuControllable/MenuControllableSystem.hpp +++ b/sources/System/MenuControllable/MenuControllableSystem.hpp @@ -25,7 +25,7 @@ namespace BBM void _updateCurrentButton(bool selected, Vector2f move); //! @return true if mouse on entity - bool _mouseOnButton(WAL::ViewEntity &entity) const; + bool _mouseOnButton(const Vector2f &mousePos, WAL::ViewEntity &entity) const; public: //! @brief time (in millisecond) since last check std::chrono::time_point now;