From 29ca6e969c973bfe1fefccbc4149bcdb10ad8cc8 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 30 May 2024 18:17:21 +0300 Subject: [PATCH] fix: block states cause crash for rotatable blocks --- src/graphics/render/WorldRenderer.cpp | 2 +- src/logic/PlayerController.cpp | 8 ++++---- src/logic/PlayerController.hpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/graphics/render/WorldRenderer.cpp b/src/graphics/render/WorldRenderer.cpp index 4c523e8c..77c348d5 100644 --- a/src/graphics/render/WorldRenderer.cpp +++ b/src/graphics/render/WorldRenderer.cpp @@ -199,7 +199,7 @@ void WorldRenderer::renderBlockSelection(Camera* camera, Shader* linesShader) { const glm::vec3 norm = PlayerController::selectedBlockNormal; const std::vector& hitboxes = block->rotatable - ? block->rt.hitboxes[PlayerController::selectedBlockStates] + ? block->rt.hitboxes[PlayerController::selectedBlockRotation] : block->hitboxes; linesShader->use(); diff --git a/src/logic/PlayerController.cpp b/src/logic/PlayerController.cpp index 44e73512..668edb4e 100644 --- a/src/logic/PlayerController.cpp +++ b/src/logic/PlayerController.cpp @@ -170,7 +170,7 @@ glm::vec3 PlayerController::selectedBlockPosition; glm::vec3 PlayerController::selectedPointPosition; glm::ivec3 PlayerController::selectedBlockNormal; int PlayerController::selectedBlockId = -1; -int PlayerController::selectedBlockStates = 0; +int PlayerController::selectedBlockRotation = 0; PlayerController::PlayerController( Level* level, @@ -250,7 +250,7 @@ void PlayerController::update(float delta, bool input, bool pause) { updateInteraction(); } else { selectedBlockId = -1; - selectedBlockStates = 0; + selectedBlockRotation = 0; } } @@ -365,7 +365,7 @@ void PlayerController::updateInteraction(){ if (vox != nullptr){ player->selectedVoxel = *vox; selectedBlockId = vox->id; - selectedBlockStates = vox->states; + selectedBlockRotation = vox->rotation(); selectedBlockPosition = iend; selectedPointPosition = end; selectedBlockNormal = norm; @@ -442,7 +442,7 @@ void PlayerController::updateInteraction(){ } } else { selectedBlockId = -1; - selectedBlockStates = 0; + selectedBlockRotation = 0; } if (rclick) { if (item->rt.funcsset.on_use) { diff --git a/src/logic/PlayerController.hpp b/src/logic/PlayerController.hpp index d48a3a51..210ca2c3 100644 --- a/src/logic/PlayerController.hpp +++ b/src/logic/PlayerController.hpp @@ -81,7 +81,7 @@ public: static glm::ivec3 selectedBlockNormal; static glm::vec3 selectedPointPosition; static int selectedBlockId; - static int selectedBlockStates; + static int selectedBlockRotation; PlayerController( Level* level,