From acc1f93f276028c2ff6b19a02cd4781adb0016f1 Mon Sep 17 00:00:00 2001 From: maelstrom Date: Sat, 12 Jul 2025 20:55:28 +0200 Subject: [PATCH] fix(rendering): hint and message should render on the same layer --- core/src/rendering/renderer.cpp | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/core/src/rendering/renderer.cpp b/core/src/rendering/renderer.cpp index d8e5c0b..660e61c 100644 --- a/core/src/rendering/renderer.cpp +++ b/core/src/rendering/renderer.cpp @@ -21,6 +21,7 @@ #include "handles.h" #include "math_helper.h" #include "objects/hint.h" +#include "objects/message.h" #include "objects/service/selection.h" #include "partassembly.h" #include "rendering/font.h" @@ -658,27 +659,23 @@ void renderMessages() { // glEnable(GL_BLEND); // glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - // Render hints for (auto it = gWorkspace()->GetDescendantsStart(); it != gWorkspace()->GetDescendantsEnd(); it++) { - if (it->GetClass() != &Hint::TYPE) continue; - std::shared_ptr message = it->CastTo().expect(); - - drawRect(0, 0, viewportWidth, 20, glm::vec4(0,0,0,1)); - float textWidth = calcTextWidth(sansSerif, message->text); - drawText(sansSerif, message->text, (viewportWidth - textWidth) / 2, 0); - } - - // Render messages - for (auto it = gWorkspace()->GetDescendantsStart(); it != gWorkspace()->GetDescendantsEnd(); it++) { - if (it->GetClass() != &Message::TYPE) continue; + if (!it->IsA()) continue; std::shared_ptr message = it->CastTo().expect(); - // Don't draw if text is empty - if (message->text == "") continue; - - drawRect(0, 0, viewportWidth, viewportHeight, glm::vec4(0.5)); float textWidth = calcTextWidth(sansSerif, message->text); - drawText(sansSerif, message->text, ((float)viewportWidth - textWidth) / 2, ((float)viewportHeight - sansSerif->height) / 2); + + // Render hint + if (message->GetClass() == &Hint::TYPE) { + drawRect(0, 0, viewportWidth, 20, glm::vec4(0,0,0,1)); + drawText(sansSerif, message->text, (viewportWidth - textWidth) / 2, 0); + } else { + // Don't draw if text is empty + if (message->text == "") continue; + + drawRect(0, 0, viewportWidth, viewportHeight, glm::vec4(0.5)); + drawText(sansSerif, message->text, ((float)viewportWidth - textWidth) / 2, ((float)viewportHeight - sansSerif->height) / 2); + } } }