From c2c255c70ae460e674da21adbea2df5ac6340863 Mon Sep 17 00:00:00 2001 From: "@clasher113" Date: Sat, 25 Nov 2023 00:35:16 +0200 Subject: [PATCH 1/2] Fixes --- src/frontend/gui/GUI.cpp | 2 +- src/frontend/gui/panels.cpp | 2 ++ src/frontend/world_render.cpp | 14 +++++++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/frontend/gui/GUI.cpp b/src/frontend/gui/GUI.cpp index db2b97a8..6cceef02 100644 --- a/src/frontend/gui/GUI.cpp +++ b/src/frontend/gui/GUI.cpp @@ -94,7 +94,7 @@ void GUI::act(float delta) { for (auto key : Events::pressedKeys) { focus->keyPressed(key); } - if (Events::clicked(mousecode::BUTTON_1)) { + if (!Events::_cursor_locked && Events::clicked(mousecode::BUTTON_1)) { int mx = Events::x; int my = Events::y; focus->mouseMove(this, mx, my); diff --git a/src/frontend/gui/panels.cpp b/src/frontend/gui/panels.cpp index 8bca8572..edbb708e 100644 --- a/src/frontend/gui/panels.cpp +++ b/src/frontend/gui/panels.cpp @@ -5,6 +5,7 @@ #include "../../window/Window.h" #include "../../assets/Assets.h" #include "../../graphics/Batch2D.h" +#include "../../window/Events.h" using std::shared_ptr; @@ -18,6 +19,7 @@ Container::Container(vec2 coord, vec2 size) : UINode(coord, size) { } shared_ptr Container::getAt(vec2 pos, shared_ptr self) { + if (!isInside(vec2(Events::x, Events::y))) return nullptr; for (auto node : nodes) { if (!node->visible()) continue; diff --git a/src/frontend/world_render.cpp b/src/frontend/world_render.cpp index dd2bdddd..3764cebc 100644 --- a/src/frontend/world_render.cpp +++ b/src/frontend/world_render.cpp @@ -171,14 +171,15 @@ void WorldRenderer::draw(const GfxContext& pctx, Camera* camera, bool occlusion) } if (level->player->debug) { - float length = 40.f; + GfxContext ctx = pctx.sub(); + ctx.depthTest(true); linesShader->use(); if (engine->getSettings().debug.showChunkBorders){ linesShader->uniformMatrix("u_projview", camera->getProjView()); - GfxContext ctx = pctx.sub(); - ctx.depthTest(true); vec3 coord = level->player->camera->position; + if (coord.x < 0) coord.x--; + if (coord.z < 0) coord.z--; int cx = floordiv((int)coord.x, CHUNK_W); int cz = floordiv((int)coord.z, CHUNK_D); for (int i = 0; i < CHUNK_W; i++) { @@ -195,20 +196,23 @@ void WorldRenderer::draw(const GfxContext& pctx, Camera* camera, bool occlusion) lineBatch->render(); } + float length = 40.f; // top-right: vec3 tsl = vec3(displayWidth - length - 4, -length - 4, 0.f); - vec3 tsl = vec3(displayWidth/2, -((int)displayHeight)/2, 0.f); + vec3 tsl = vec3(displayWidth/2, displayHeight/2, 0.f); glm::mat4 model(glm::translate(glm::mat4(1.f), tsl)); linesShader->uniformMatrix("u_projview", glm::ortho( 0.f, (float)displayWidth, - -(float)displayHeight, 0.f, + 0.f, (float)displayHeight, -length, length) * model * glm::inverse(camera->rotation)); + ctx.depthTest(false); lineBatch->lineWidth(4.0f); lineBatch->line(0.f, 0.f, 0.f, length, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f); lineBatch->line(0.f, 0.f, 0.f, 0.f, length, 0.f, 0.f, 0.f, 0.f, 1.f); lineBatch->line(0.f, 0.f, 0.f, 0.f, 0.f, length, 0.f, 0.f, 0.f, 1.f); lineBatch->render(); + ctx.depthTest(true); lineBatch->lineWidth(2.0f); lineBatch->line(0.f, 0.f, 0.f, length, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f); lineBatch->line(0.f, 0.f, 0.f, 0.f, length, 0.f, 0.f, 1.f, 0.f, 1.f); From 6d777ea01b865134abbd847a3a69f0e573714d6e Mon Sep 17 00:00:00 2001 From: "@clasher113" Date: Sat, 25 Nov 2023 00:42:18 +0200 Subject: [PATCH 2/2] Fix --- src/frontend/gui/GUI.cpp | 21 ++++++++++++--------- src/graphics/BlocksRenderer.cpp | 4 ++-- src/voxels/Block.h | 2 +- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/frontend/gui/GUI.cpp b/src/frontend/gui/GUI.cpp index 6cceef02..5aeda08c 100644 --- a/src/frontend/gui/GUI.cpp +++ b/src/frontend/gui/GUI.cpp @@ -94,15 +94,18 @@ void GUI::act(float delta) { for (auto key : Events::pressedKeys) { focus->keyPressed(key); } - if (!Events::_cursor_locked && Events::clicked(mousecode::BUTTON_1)) { - int mx = Events::x; - int my = Events::y; - focus->mouseMove(this, mx, my); - } - if (prevfocus == focus){ - for (int i = mousecode::BUTTON_1; i < mousecode::BUTTON_1+12; i++) { - if (Events::jclicked(i)) { - focus->clicked(this, i); + + if (!Events::_cursor_locked) { + if (Events::clicked(mousecode::BUTTON_1)) { + int mx = Events::x; + int my = Events::y; + focus->mouseMove(this, mx, my); + } + if (prevfocus == focus){ + for (int i = mousecode::BUTTON_1; i < mousecode::BUTTON_1+12; i++) { + if (Events::jclicked(i)) { + focus->clicked(this, i); + } } } } diff --git a/src/graphics/BlocksRenderer.cpp b/src/graphics/BlocksRenderer.cpp index 71f51d41..801e11b7 100644 --- a/src/graphics/BlocksRenderer.cpp +++ b/src/graphics/BlocksRenderer.cpp @@ -139,7 +139,7 @@ inline vec4 do_tint(float value) { void BlocksRenderer::blockCube(int x, int y, int z, const vec3& size, const UVRegion(&texfaces)[6], ubyte group) { vec4 lights[]{ vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f) }; if (isOpen(x, y, z + 1, group)) { - face(vec3(x, y, z), size.x, size.y, vec3(1, 0, 0), vec3(0, 1, 0), texfaces[5], lights, do_tint(0.9f)); + face(vec3(x, y, z), size.x, size.y, vec3(1, 0, 0), vec3(0, 1, 0), texfaces[5], lights, do_tint(1.0)); } if (isOpen(x, y, z - 1, group)) { face(vec3(x + size.x, y, z - size.z), size.x, size.y, vec3(-1, 0, 0), vec3(0, 1, 0), texfaces[4], lights, vec4(1.0f)); @@ -332,7 +332,7 @@ void BlocksRenderer::render(const voxel* voxels, int atlas_size) { int z = (i / CHUNK_D) % CHUNK_W; switch (def.model) { case BlockModel::block: - if (*((light_t*)&def.emission)) { + if (*((uint32_t*)&def.emission)) { blockCube(x, y, z, vec3(1, 1, 1), texfaces, def.drawGroup); } else { diff --git a/src/voxels/Block.h b/src/voxels/Block.h index 2cade46e..42505f8c 100644 --- a/src/voxels/Block.h +++ b/src/voxels/Block.h @@ -20,7 +20,7 @@ public: unsigned int id; // 0 1 2 3 4 5 std::string textureFaces[6]; // -x,x, -y,y, -z,z - unsigned char emission[3]; + unsigned char emission[4]; unsigned char drawGroup = 0; BlockModel model = BlockModel::block; bool lightPassing = false;