Organization

This commit is contained in:
2025-06-23 21:12:07 -05:00
parent 8f3cce41b6
commit bcd1c86318
2 changed files with 59 additions and 36 deletions

View File

@@ -7,6 +7,7 @@
#include <JUI/Widgets/Slider.hpp>
#include <JUI/Base/TextBase.hpp>
#include <ranges>
namespace TestGame
{
@@ -100,44 +101,12 @@ namespace TestGame
/// This is performed after translating the origin to the center of the screen.
void ApplyCameraTransformation();
void DrawLevel(const Level* level) const
{
for (const auto* layer : level->layers)
{
DrawLayer(layer);
}
}
void DrawLevel(const Level* level) const;
/// Draw objects with the camera projection, as if they are in world-space.
void DrawWorldSpace() {
/// Draw objects with the camera projection, as if they are in world-space.
void DrawWorldSpace();
if (!data_ready) return; // Don't try to draw the level if not loaded.
DrawLevel(loaded_level);
for (auto* entity : entities) {
entity->Draw();
}
}
void Render() {
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
J2D::Begin();
{
glPushMatrix();
{
ApplyCameraTransformation();
DrawWorldSpace();
}
glPopMatrix();
}
J2D::End();
scene->Draw();
}
void Render();
#pragma region ReWindow Overrides
void OnRefresh(float elapsed) override

View File

@@ -18,6 +18,22 @@ TestGame::TestGameAppWindow::~TestGameAppWindow() {
}
template <typename T>
struct Range {
T min;
T max;
};
template <typename T>
T map(T value, T in_min, T in_max, T out_min, T out_max) {
return (value - in_min) / (in_max - in_min) * (out_max - out_min) + out_min;
}
template <typename T>
T map(T value, const Range<T>& in, const Range<T>& out) {
return map(value, in.min, in.max, out.min, out.max);
}
void TestGame::TestGameAppWindow::CreateUI() {
using namespace JUI::UDimLiterals;
@@ -299,3 +315,41 @@ void TestGame::TestGameAppWindow::ApplyCameraTransformation() {
glScalef(camera.scale.current, camera.scale.current, 1);
glTranslatef(-camera.translation.current.x, -camera.translation.current.y, 0);
}
void TestGame::TestGameAppWindow::DrawLevel(const Level *level) const {
/// Draw top layers last.
for (const auto* layer : std::ranges::views::reverse(level->layers))
{
DrawLayer(layer);
}
}
void TestGame::TestGameAppWindow::DrawWorldSpace() {
if (!data_ready) return; // Don't try to draw the level if not loaded.
DrawLevel(loaded_level);
for (auto* entity : entities) {
entity->Draw();
}
}
void TestGame::TestGameAppWindow::Render() {
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
J2D::Begin();
{
glPushMatrix();
{
ApplyCameraTransformation();
DrawWorldSpace();
}
glPopMatrix();
}
J2D::End();
scene->Draw();
}