diff --git a/res/content/base/scripts/components/player_animator.lua b/res/content/base/scripts/components/player_animator.lua index 1fdf4722..6419d543 100644 --- a/res/content/base/scripts/components/player_animator.lua +++ b/res/content/base/scripts/components/player_animator.lua @@ -3,7 +3,9 @@ local body = entity.rigidbody local rig = entity.skeleton local itemid = 0 +local headIndex = rig:index("head") local itemIndex = rig:index("item") +local bodyIndex = rig:index("body") local function refresh_model(id) itemid = id @@ -16,6 +18,11 @@ function on_render() if pid == -1 then return end + + local rx, ry, rz = player.get_rot(pid) + rig:set_matrix(headIndex, mat4.rotate({1, 0, 0}, ry)) + rig:set_matrix(bodyIndex, mat4.rotate({0, 1, 0}, rx)) + local invid, slotid = player.get_inventory(pid) local id, _ = inventory.get(invid, slotid) if id ~= itemid then diff --git a/src/logic/PlayerController.cpp b/src/logic/PlayerController.cpp index ea6037fa..eafb2e32 100644 --- a/src/logic/PlayerController.cpp +++ b/src/logic/PlayerController.cpp @@ -170,8 +170,8 @@ void CameraControl::update( switchCamera(); } - auto& spCamera = player.spCamera; - auto& tpCamera = player.tpCamera; + const auto& spCamera = player.spCamera; + const auto& tpCamera = player.tpCamera; refresh(); @@ -316,15 +316,15 @@ static int determine_rotation( if (name == "pipe") { if (norm.x < 0.0f) return BLOCK_DIR_WEST; - else if (norm.x > 0.0f) + if (norm.x > 0.0f) return BLOCK_DIR_EAST; - else if (norm.y > 0.0f) + if (norm.y > 0.0f) return BLOCK_DIR_UP; - else if (norm.y < 0.0f) + if (norm.y < 0.0f) return BLOCK_DIR_DOWN; - else if (norm.z > 0.0f) + if (norm.z > 0.0f) return BLOCK_DIR_NORTH; - else if (norm.z < 0.0f) + if (norm.z < 0.0f) return BLOCK_DIR_SOUTH; } else if (name == "pane") { if (abs(camDir.x) > abs(camDir.z)) { diff --git a/src/objects/Player.cpp b/src/objects/Player.cpp index 731627fe..38fdbc30 100644 --- a/src/objects/Player.cpp +++ b/src/objects/Player.cpp @@ -170,23 +170,9 @@ void Player::postUpdate() { } } + // TODO: ERASE & FORGET auto& skeleton = entity->getSkeleton(); - skeleton.visible = currentCamera != fpCamera; - - auto body = skeleton.config->find("body"); - auto head = skeleton.config->find("head"); - - if (body) { - skeleton.pose.matrices[body->getIndex()] = glm::rotate( - glm::mat4(1.0f), glm::radians(rotation.x), glm::vec3(0, 1, 0) - ); - } - if (head) { - skeleton.pose.matrices[head->getIndex()] = glm::rotate( - glm::mat4(1.0f), glm::radians(rotation.y), glm::vec3(1, 0, 0) - ); - } } void Player::teleport(glm::vec3 position) {