diff --git a/src/frontend/hud.cpp b/src/frontend/hud.cpp index 60cee6c4..08dfcf40 100644 --- a/src/frontend/hud.cpp +++ b/src/frontend/hud.cpp @@ -538,6 +538,7 @@ void Hud::closeInventory() { exchangeSlotInv = nullptr; inventoryOpen = false; inventoryView = nullptr; + secondInvView = nullptr; secondUI = nullptr; for (auto& element : elements) { @@ -597,6 +598,9 @@ void Hud::remove(const std::shared_ptr& node) { } } cleanup(); + if (node == secondUI) { + closeInventory(); + } } void Hud::setDebug(bool flag) { diff --git a/src/graphics/core/Batch3D.cpp b/src/graphics/core/Batch3D.cpp index 8f222a51..df6fdef7 100644 --- a/src/graphics/core/Batch3D.cpp +++ b/src/graphics/core/Batch3D.cpp @@ -126,7 +126,15 @@ void Batch3D::sprite( float scale = 1.0f / static_cast(atlasRes); float u = (index % atlasRes) * scale; float v = 1.0f - ((index / atlasRes) * scale) - scale; - sprite(pos, up, right, w, h, UVRegion(u, v, u+scale, v+scale), tint); + sprite( + pos + right * w + up * h, // revert centering + up, + right, + w, + h, + UVRegion(u, v, u + scale, v + scale), + tint + ); } void Batch3D::sprite( diff --git a/src/graphics/render/TextsRenderer.cpp b/src/graphics/render/TextsRenderer.cpp index 9e4210df..4b905e13 100644 --- a/src/graphics/render/TextsRenderer.cpp +++ b/src/graphics/render/TextsRenderer.cpp @@ -51,6 +51,7 @@ void TextsRenderer::renderNote( glm::vec3 yvec = note.getAxisY(); int width = font.calcWidth(text, text.length()); + int height = font.getLineHeight(); if (preset.displayMode == NoteDisplayMode::Y_FREE_BILLBOARD || preset.displayMode == NoteDisplayMode::XY_FREE_BILLBOARD) { xvec = camera.position - pos; @@ -96,8 +97,11 @@ void TextsRenderer::renderNote( pos = screenPos / screenPos.w; } - } else if (!frustum.isBoxVisible(pos - xvec * (width * 0.5f * preset.scale), - pos + xvec * (width * 0.5f * preset.scale))) { + } else if (!frustum.isBoxVisible( + pos - xvec * (width * 0.5f) * preset.scale, + pos + xvec * (width * 0.5f) * preset.scale + + yvec * static_cast(height) * preset.scale + )) { return; } auto color = preset.color; diff --git a/src/logic/scripting/lua/libs/libhud.cpp b/src/logic/scripting/lua/libs/libhud.cpp index 988685cc..432d8eb6 100644 --- a/src/logic/scripting/lua/libs/libhud.cpp +++ b/src/logic/scripting/lua/libs/libhud.cpp @@ -46,7 +46,7 @@ static int l_open(lua::State* L) { } return lua::pushinteger(L, hud->openInventory( layout, - level->inventories->get(invid), + lua::isnoneornil(L, 3) ? nullptr : level->inventories->get(invid), playerInventory )->getId()); }