diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/first_app.cpp | 19 | ||||
-rwxr-xr-x | src/first_app.hpp | 11 | ||||
-rw-r--r-- | src/keyboard_movement_controller.cpp | 26 | ||||
-rw-r--r-- | src/keyboard_movement_controller.hpp | 30 | ||||
-rw-r--r-- | src/simple_renderer.cpp | 3 | ||||
-rw-r--r-- | src/simple_renderer.hpp | 1 |
6 files changed, 39 insertions, 51 deletions
diff --git a/src/first_app.cpp b/src/first_app.cpp index 423012a..5d8fcf1 100755 --- a/src/first_app.cpp +++ b/src/first_app.cpp @@ -1,22 +1,5 @@ #include "first_app.hpp" -#include "xe_camera.hpp" -#include "xe_engine.hpp" -#include "xe_game_object.hpp" -#include "xe_model.hpp" -#include "xe_render_system.hpp" -#include "keyboard_movement_controller.hpp" -#include "simple_renderer.hpp" -#include "xe_sound.hpp" - -#define GLM_FORCE_RADIANS -#define GLM_FORCE_DEPTH_ZERO_TO_ONE -#include <glm/glm.hpp> -#include <glm/gtc/constants.hpp> -#include <array> - -#include <string> - namespace app { FirstApp::FirstApp() : xeEngine{WIDTH, HEIGHT, "Xenon Vulkan Engine"} { @@ -45,7 +28,7 @@ void FirstApp::run() { float frameTime = xeEngine.getFrameTime(); - cameraController.moveInPlaneXZ(xeEngine.getWindow().getGLFWwindow(), frameTime, viewerObject); + cameraController.update(xeEngine.getInput(), viewerObject, frameTime); xeEngine.getCamera().setViewYXZ(viewerObject.transform.translation, viewerObject.transform.rotation); if(xeEngine.beginFrame()) { diff --git a/src/first_app.hpp b/src/first_app.hpp index d8942ab..a630d47 100755 --- a/src/first_app.hpp +++ b/src/first_app.hpp @@ -1,9 +1,16 @@ #pragma once #include "xe_engine.hpp" -#include "xe_game_object.hpp" -#include "xe_descriptors.hpp" +#include "keyboard_movement_controller.hpp" +#include "simple_renderer.hpp" + +#define GLM_FORCE_RADIANS +#define GLM_FORCE_DEPTH_ZERO_TO_ONE +#include <glm/glm.hpp> +#include <glm/gtc/constants.hpp> +#include <array> +#include <string> #include <memory> #include <vector> diff --git a/src/keyboard_movement_controller.cpp b/src/keyboard_movement_controller.cpp index 325693e..1f1a0a7 100644 --- a/src/keyboard_movement_controller.cpp +++ b/src/keyboard_movement_controller.cpp @@ -1,17 +1,13 @@ #include "keyboard_movement_controller.hpp" -#include <glm/common.hpp> -#include <glm/fwd.hpp> -#include <glm/geometric.hpp> -#include <limits> namespace app { -void KeyboardMovementController::moveInPlaneXZ(GLFWwindow* window, float dt, xe::XeGameObject& gameObject) { +void KeyboardMovementController::update(xe::XeInput &input, xe::XeGameObject& gameObject, float dt) { glm::vec3 rotate{0}; - if(glfwGetKey(window, keys.lookRight) == GLFW_PRESS) rotate.y += 1.f; - if(glfwGetKey(window, keys.lookLeft) == GLFW_PRESS) rotate.y -= 1.f; - if(glfwGetKey(window, keys.lookUp) == GLFW_PRESS) rotate.x -= 1.f; - if(glfwGetKey(window, keys.lookDown) == GLFW_PRESS) rotate.x += 1.f; + if(input.isKeyPressed(keys.lookRight)) rotate.y += 1.f; + if(input.isKeyPressed(keys.lookLeft)) rotate.y -= 1.f; + if(input.isKeyPressed(keys.lookUp)) rotate.x -= 1.f; + if(input.isKeyPressed(keys.lookDown)) rotate.x += 1.f; if (glm::dot(rotate, rotate) > std::numeric_limits<float>::epsilon()) { gameObject.transform.rotation += lookSpeed * dt * glm::normalize(rotate); @@ -26,12 +22,12 @@ void KeyboardMovementController::moveInPlaneXZ(GLFWwindow* window, float dt, xe: const glm::vec3 upDir{0.f, 01.f, 0.f}; glm::vec3 moveDir{0}; - if(glfwGetKey(window, keys.moveForward) == GLFW_PRESS) moveDir += forwardDir; - if(glfwGetKey(window, keys.moveBackward) == GLFW_PRESS) moveDir -= forwardDir; - if(glfwGetKey(window, keys.moveRight) == GLFW_PRESS) moveDir += rightDir; - if(glfwGetKey(window, keys.moveLeft) == GLFW_PRESS) moveDir -= rightDir; - if(glfwGetKey(window, keys.moveUp) == GLFW_PRESS) moveDir += upDir; - if(glfwGetKey(window, keys.moveDown) == GLFW_PRESS) moveDir -= upDir; + if(input.isKeyPressed(keys.moveForward)) moveDir += forwardDir; + if(input.isKeyPressed(keys.moveBackward)) moveDir -= forwardDir; + if(input.isKeyPressed(keys.moveRight)) moveDir += rightDir; + if(input.isKeyPressed(keys.moveLeft)) moveDir -= rightDir; + if(input.isKeyPressed(keys.moveUp)) moveDir += upDir; + if(input.isKeyPressed(keys.moveDown)) moveDir -= upDir; if (glm::dot(moveDir, moveDir) > std::numeric_limits<float>::epsilon()) { gameObject.transform.translation += moveSpeed * dt * glm::normalize(moveDir); diff --git a/src/keyboard_movement_controller.hpp b/src/keyboard_movement_controller.hpp index b3e3a15..a9ba031 100644 --- a/src/keyboard_movement_controller.hpp +++ b/src/keyboard_movement_controller.hpp @@ -1,27 +1,31 @@ #pragma once #include "xe_game_object.hpp" -#include "xe_window.hpp" -#include <GLFW/glfw3.h> +#include "xe_input.hpp" + +#include <glm/common.hpp> +#include <glm/fwd.hpp> +#include <glm/geometric.hpp> +#include <limits> namespace app { class KeyboardMovementController { public: struct KeyMappings { - int moveLeft = GLFW_KEY_A; - int moveRight = GLFW_KEY_D; - int moveForward = GLFW_KEY_W; - int moveBackward = GLFW_KEY_S; - int moveUp = GLFW_KEY_E; - int moveDown = GLFW_KEY_Q; - int lookLeft = GLFW_KEY_LEFT; - int lookRight = GLFW_KEY_RIGHT; - int lookUp = GLFW_KEY_UP; - int lookDown = GLFW_KEY_DOWN; + int moveLeft = KEY_A; + int moveRight = KEY_D; + int moveForward = KEY_W; + int moveBackward = KEY_S; + int moveUp = KEY_E; + int moveDown = KEY_Q; + int lookLeft = KEY_LEFT; + int lookRight = KEY_RIGHT; + int lookUp = KEY_UP; + int lookDown = KEY_DOWN; }; - void moveInPlaneXZ(GLFWwindow* window, float dt, xe::XeGameObject& gameObject); + void update(xe::XeInput &input, xe::XeGameObject& gameObject, float dt); KeyMappings keys{}; float moveSpeed{3.f}; diff --git a/src/simple_renderer.cpp b/src/simple_renderer.cpp index 921019a..5a57324 100644 --- a/src/simple_renderer.cpp +++ b/src/simple_renderer.cpp @@ -1,7 +1,4 @@ #include "simple_renderer.hpp" -#include "xe_render_system.hpp" - -#include <iostream> namespace app { diff --git a/src/simple_renderer.hpp b/src/simple_renderer.hpp index d9be7b2..9dbfd1c 100644 --- a/src/simple_renderer.hpp +++ b/src/simple_renderer.hpp @@ -1,6 +1,7 @@ #pragma once #include "xe_render_system.hpp" + #include <string> namespace app { |