From bcd2dc8192ee8cc7b02c1797c2603d841a9d177c Mon Sep 17 00:00:00 2001 From: Riyyi Date: Thu, 28 Jan 2021 03:21:29 +0100 Subject: [PATCH] Simplify camera controllers perspective movement calculation --- assets/lua/cameracontroller.lua | 14 ++++++-------- inferno/src/inferno/script/cameracontroller.cpp | 14 ++++++-------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/assets/lua/cameracontroller.lua b/assets/lua/cameracontroller.lua index 2f179e5..7ca1555 100644 --- a/assets/lua/cameracontroller.lua +++ b/assets/lua/cameracontroller.lua @@ -119,25 +119,23 @@ LuaScript = { -- WASD movement if Input.isKeyPressed(keyCode("GLFW_KEY_W")) then - self.transform.translate = glm.vec3( self.transform.translate + cameraSpeed * self.transform.rotate ) + self.transform.translate = self.transform.translate + self.transform.rotate * cameraSpeed end if Input.isKeyPressed(keyCode("GLFW_KEY_S")) then - self.transform.translate = glm.vec3( self.transform.translate - cameraSpeed * self.transform.rotate ) + self.transform.translate = self.transform.translate - self.transform.rotate * cameraSpeed end if Input.isKeyPressed(keyCode("GLFW_KEY_A")) then - self.transform.translate = glm.vec3( self.transform.translate - - glm.normalize(glm.cross(self.transform.rotate, self.camera.up)) * cameraSpeed ) + self.transform.translate = self.transform.translate - glm.normalize(glm.cross(self.transform.rotate, self.camera.up)) * cameraSpeed end if Input.isKeyPressed(keyCode("GLFW_KEY_D")) then - self.transform.translate = glm.vec3( self.transform.translate + - glm.normalize(glm.cross(self.transform.rotate, self.camera.up)) * cameraSpeed ) + self.transform.translate = self.transform.translate + glm.normalize(glm.cross(self.transform.rotate, self.camera.up)) * cameraSpeed end -- Up / down movement if Input.isKeyPressed(keyCode("GLFW_KEY_SPACE")) then - self.transform.translate = glm.vec3( self.transform.translate.x, self.transform.translate.y + cameraSpeed, self.transform.translate.z ) + self.transform.translate.y = self.transform.translate.y + cameraSpeed end if Input.isKeyPressed(keyCode("GLFW_KEY_LEFT_SHIFT")) then - self.transform.translate = glm.vec3( self.transform.translate.x, self.transform.translate.y - cameraSpeed, self.transform.translate.z ) + self.transform.translate.y = self.transform.translate.y - cameraSpeed end end, diff --git a/inferno/src/inferno/script/cameracontroller.cpp b/inferno/src/inferno/script/cameracontroller.cpp index 413aa2e..5b4adca 100644 --- a/inferno/src/inferno/script/cameracontroller.cpp +++ b/inferno/src/inferno/script/cameracontroller.cpp @@ -98,25 +98,23 @@ namespace Inferno { // WASD movement if (Input::isKeyPressed(KeyCode("GLFW_KEY_W"))) { - transform->translate = { transform->translate + cameraSpeed * transform->rotate }; + transform->translate += transform->rotate * cameraSpeed; } if (Input::isKeyPressed(KeyCode("GLFW_KEY_S"))) { - transform->translate = { transform->translate - cameraSpeed * transform->rotate }; + transform->translate -= transform->rotate * cameraSpeed; } if (Input::isKeyPressed(KeyCode("GLFW_KEY_A"))) { - transform->translate = { transform->translate - - glm::normalize(glm::cross(transform->rotate, m_camera->up)) * cameraSpeed }; + transform->translate -= glm::normalize(glm::cross(transform->rotate, m_camera->up)) * cameraSpeed; } if (Input::isKeyPressed(KeyCode("GLFW_KEY_D"))) { - transform->translate = { transform->translate + - glm::normalize(glm::cross(transform->rotate, m_camera->up)) * cameraSpeed }; + transform->translate += glm::normalize(glm::cross(transform->rotate, m_camera->up)) * cameraSpeed; } // Up / down movement if (Input::isKeyPressed(KeyCode("GLFW_KEY_SPACE"))) { - transform->translate = { transform->translate.x, transform->translate.y + cameraSpeed, transform->translate.z }; + transform->translate.y += cameraSpeed; } if (Input::isKeyPressed(KeyCode("GLFW_KEY_LEFT_SHIFT"))) { - transform->translate = { transform->translate.x, transform->translate.y - cameraSpeed, transform->translate.z }; + transform->translate.y -= cameraSpeed; } } }