From 05d949523cc2ef7fe165f8c9f8657ea871274cd3 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sat, 14 Feb 2026 05:05:38 -0600 Subject: [PATCH] feat(ui): add CGWorldFrame::OnFrameRender --- src/ui/game/CGWorldFrame.cpp | 41 ++++++++++++++++++++++++++++++++++++ src/ui/game/CGWorldFrame.hpp | 6 ++++++ src/ui/game/PlayerName.cpp | 9 ++++++++ src/ui/game/PlayerName.hpp | 8 +++++++ 4 files changed, 64 insertions(+) create mode 100644 src/ui/game/PlayerName.cpp create mode 100644 src/ui/game/PlayerName.hpp diff --git a/src/ui/game/CGWorldFrame.cpp b/src/ui/game/CGWorldFrame.cpp index db9a49e..1300565 100644 --- a/src/ui/game/CGWorldFrame.cpp +++ b/src/ui/game/CGWorldFrame.cpp @@ -1,5 +1,9 @@ #include "ui/game/CGWorldFrame.hpp" +#include "gx/Shader.hpp" +#include "gx/Transform.hpp" +#include "ui/game/PlayerName.hpp" #include +#include CSimpleFrame* CGWorldFrame::Create(CSimpleFrame* parent) { // TODO use CDataAllocator @@ -7,6 +11,27 @@ CSimpleFrame* CGWorldFrame::Create(CSimpleFrame* parent) { return STORM_NEW(CGWorldFrame)(parent); } +void CGWorldFrame::RenderWorld(void* param) { + auto frame = reinterpret_cast(param); + + C44Matrix savedProj; + GxXformProjection(savedProj); + + C44Matrix savedView; + GxXformView(savedView); + + frame->OnWorldUpdate(); + PlayerNameUpdateWorldText(); + + frame->OnWorldRender(); + PlayerNameRenderWorldText(); + + GxXformSetProjection(savedProj); + GxXformSetView(savedView); + + CShaderEffect::UpdateProjMatrix(); +} + CGWorldFrame::CGWorldFrame(CSimpleFrame* parent) : CSimpleFrame(parent) { // TODO @@ -20,3 +45,19 @@ CGWorldFrame::CGWorldFrame(CSimpleFrame* parent) : CSimpleFrame(parent) { // TODO } + +void CGWorldFrame::OnFrameRender(CRenderBatch* batch, uint32_t layer) { + this->CSimpleFrame::OnFrameRender(batch, layer); + + if (layer == DRAWLAYER_BACKGROUND) { + batch->QueueCallback(&CGWorldFrame::RenderWorld, this); + } +} + +void CGWorldFrame::OnWorldRender() { + // TODO +} + +void CGWorldFrame::OnWorldUpdate() { + // TODO +} diff --git a/src/ui/game/CGWorldFrame.hpp b/src/ui/game/CGWorldFrame.hpp index ce95231..6cec83a 100644 --- a/src/ui/game/CGWorldFrame.hpp +++ b/src/ui/game/CGWorldFrame.hpp @@ -11,9 +11,15 @@ class CGWorldFrame : public CSimpleFrame { // Static functions static CSimpleFrame* Create(CSimpleFrame* parent); + static void RenderWorld(void* param); + + // Virtual member functions + virtual void OnFrameRender(CRenderBatch* batch, uint32_t layer); // Member functions CGWorldFrame(CSimpleFrame* parent); + void OnWorldRender(); + void OnWorldUpdate(); }; #endif diff --git a/src/ui/game/PlayerName.cpp b/src/ui/game/PlayerName.cpp new file mode 100644 index 0000000..a871c8c --- /dev/null +++ b/src/ui/game/PlayerName.cpp @@ -0,0 +1,9 @@ +#include "ui/game/PlayerName.hpp" + +void PlayerNameRenderWorldText() { + // TODO +} + +void PlayerNameUpdateWorldText() { + // TODO +} diff --git a/src/ui/game/PlayerName.hpp b/src/ui/game/PlayerName.hpp new file mode 100644 index 0000000..a4e320e --- /dev/null +++ b/src/ui/game/PlayerName.hpp @@ -0,0 +1,8 @@ +#ifndef UI_GAME_PLAYER_NAME_HPP +#define UI_GAME_PLAYER_NAME_HPP + +void PlayerNameRenderWorldText(); + +void PlayerNameUpdateWorldText(); + +#endif