diff --git a/engine/source/editor/include/editor_ui.h b/engine/source/editor/include/editor_ui.h index 764706c05..d8fd1a38c 100644 --- a/engine/source/editor/include/editor_ui.h +++ b/engine/source/editor/include/editor_ui.h @@ -44,6 +44,7 @@ namespace Pilot void createComponentUI(Reflection::ReflectionInstance& instance); void createLeafNodeUI(Reflection::ReflectionInstance& instance); std::string getLeafUINodeParentLabel(); + bool isCursorInRect(Vector2 pos, Vector2 size) const; void showEditorUI(); void showEditorMenu(bool* p_open); diff --git a/engine/source/editor/source/editor_ui.cpp b/engine/source/editor/source/editor_ui.cpp index dcf16c5ba..547352bdd 100644 --- a/engine/source/editor/source/editor_ui.cpp +++ b/engine/source/editor/source/editor_ui.cpp @@ -222,6 +222,11 @@ namespace Pilot return parent_label; } + bool EditorUI::isCursorInRect(Vector2 pos, Vector2 size) const + { + return pos.x <= m_mouse_x && m_mouse_x <= pos.x + size.x && pos.y <= m_mouse_y && m_mouse_y <= pos.y + size.y; + } + GObject* EditorUI::getSelectedGObject() const { GObject* selected_object = nullptr; @@ -923,8 +928,7 @@ namespace Pilot { glfwSetInputMode(m_io->m_window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); - if (m_mouse_x > m_engine_window_pos.x && m_mouse_x < (m_engine_window_pos.x + m_engine_window_size.x) && - m_mouse_y > m_engine_window_pos.y && m_mouse_y < (m_engine_window_pos.y + m_engine_window_size.y)) + if (isCursorInRect(m_engine_window_pos, m_engine_window_size)) { Vector2 cursor_uv = Vector2((m_mouse_x - m_engine_window_pos.x) / m_engine_window_size.x, (m_mouse_y - m_engine_window_pos.y) / m_engine_window_size.y); @@ -951,8 +955,7 @@ namespace Pilot return; } // wheel scrolled up = zoom in by 2 extra degrees - if (m_mouse_x > m_engine_window_pos.x && m_mouse_x < (m_engine_window_pos.x + m_engine_window_size.x) && - m_mouse_y > m_engine_window_pos.y && m_mouse_y < (m_engine_window_pos.y + m_engine_window_size.y)) + if (isCursorInRect(m_engine_window_pos, m_engine_window_size)) { m_tmp_uistate->m_editor_camera->zoom((float)yoffset * 2.0f); } @@ -969,8 +972,7 @@ namespace Pilot if (current_active_level == nullptr) return; - if (m_mouse_x > m_engine_window_pos.x && m_mouse_x < (m_engine_window_pos.x + m_engine_window_size.x) && - m_mouse_y > m_engine_window_pos.y && m_mouse_y < (m_engine_window_pos.y + m_engine_window_size.y)) + if (isCursorInRect(m_engine_window_pos, m_engine_window_size)) { if (key == GLFW_MOUSE_BUTTON_LEFT) {