diff options
Diffstat (limited to 'engine')
-rw-r--r-- | engine/xe_engine.cpp | 9 | ||||
-rw-r--r-- | engine/xe_engine.hpp | 10 | ||||
-rw-r--r-- | engine/xe_input.cpp | 46 | ||||
-rw-r--r-- | engine/xe_input.hpp | 167 | ||||
-rwxr-xr-x | engine/xe_pipeline.cpp | 2 | ||||
-rwxr-xr-x | engine/xe_pipeline.hpp | 1 | ||||
-rw-r--r-- | engine/xe_render_system.cpp | 14 | ||||
-rw-r--r-- | engine/xe_render_system.hpp | 8 | ||||
-rw-r--r-- | engine/xe_renderer.cpp | 12 | ||||
-rw-r--r-- | engine/xe_renderer.hpp | 11 | ||||
-rw-r--r-- | engine/xe_sound.cpp | 4 | ||||
-rw-r--r-- | engine/xe_sound.hpp | 3 | ||||
-rwxr-xr-x | engine/xe_swap_chain.cpp | 9 | ||||
-rwxr-xr-x | engine/xe_swap_chain.hpp | 10 | ||||
-rwxr-xr-x | engine/xe_window.cpp | 4 | ||||
-rwxr-xr-x | engine/xe_window.hpp | 6 |
16 files changed, 251 insertions, 65 deletions
diff --git a/engine/xe_engine.cpp b/engine/xe_engine.cpp index a4ddaea..f28bbce 100644 --- a/engine/xe_engine.cpp +++ b/engine/xe_engine.cpp @@ -1,17 +1,12 @@ #include "xe_engine.hpp" -#include "xe_image.hpp" - -#include <chrono> -#include <iostream> -#include <AL/alc.h> -#include <AL/alut.h> namespace xe { Engine::Engine(int width, int height, std::string name) : xeWindow{width, height, name}, xeDevice{xeWindow}, xeRenderer{xeWindow, xeDevice}, - xeCamera{} { + xeCamera{}, + xeInput{xeWindow} { loadDescriptorPool(); alutInit(0, NULL); diff --git a/engine/xe_engine.hpp b/engine/xe_engine.hpp index aa1c774..28974cb 100644 --- a/engine/xe_engine.hpp +++ b/engine/xe_engine.hpp @@ -1,14 +1,19 @@ #pragma once -#include "xe_window.hpp" #include "xe_device.hpp" #include "xe_renderer.hpp" #include "xe_camera.hpp" #include "xe_descriptors.hpp" #include "xe_image.hpp" +#include "xe_input.hpp" +#include "xe_sound.hpp" #include <chrono> #include <string> +#include <iostream> +#include <AL/alc.h> +#include <AL/alut.h> + namespace xe { class Engine { @@ -22,7 +27,7 @@ class Engine { Engine(const Engine&) = delete; Engine operator=(const Engine&) = delete; - Window& getWindow() {return xeWindow;} + Input& getInput() {return xeInput;} Camera& getCamera() {return xeCamera;} std::shared_ptr<Model> loadModelFromFile(const std::string &filename); @@ -44,6 +49,7 @@ class Engine { Device xeDevice; Renderer xeRenderer; Camera xeCamera; + Input xeInput; std::chrono::_V2::system_clock::time_point currentTime; float frameTime; diff --git a/engine/xe_input.cpp b/engine/xe_input.cpp new file mode 100644 index 0000000..a764e0c --- /dev/null +++ b/engine/xe_input.cpp @@ -0,0 +1,46 @@ +#include "xe_input.hpp" + +#include <GLFW/glfw3.h> + +namespace xe { + +static Input* _instance; + +Input::Input(Window& window) : window{window} { + glfwSetKeyCallback(window.getGLFWwindow(), Input::key_callback); + glfwSetMouseButtonCallback(window.getGLFWwindow(), Input::mouse_callback); + _instance = this; +} + +bool Input::isKeyPressed(int key) { + return glfwGetKey(window.getGLFWwindow(), key) == GLFW_PRESS; +} + +bool Input::wasKeyPressed(int key) { + if(_pressed[key] == true) { + _pressed[key] = false; + return true; + } + return false; +} + +bool Input::wasKeyReleased(int key) { + if(_released[key] == true) { + _released[key] = false; + return true; + } + return false; +} + +void Input::key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { + if(action == GLFW_PRESS) _instance->_pressed[key] = true; + if(action == GLFW_RELEASE) _instance->_released[key] = true; +} + +void Input::mouse_callback(GLFWwindow* window, int key, int action, int mods) { + if(action == GLFW_PRESS) _instance->_pressed[key] = true; + if(action == GLFW_RELEASE) _instance->_released[key] = true; +} + + +}
\ No newline at end of file diff --git a/engine/xe_input.hpp b/engine/xe_input.hpp new file mode 100644 index 0000000..7b6a0af --- /dev/null +++ b/engine/xe_input.hpp @@ -0,0 +1,167 @@ +#pragma once + +#include "xe_window.hpp" + +#include <vector> +#include <map> + +#include <GLFW/glfw3.h> + +namespace xe { + +class Input { + + public: + + bool isKeyPressed(int key); + bool wasKeyPressed(int key); + bool wasKeyReleased(int key); + + private: + + Input(Window& window); + ~Input() {}; + + void setIsKeyDown(int key, bool isDown); + + std::map<int, bool> _pressed; + std::map<int, bool> _released; + Window &window; + + static void key_callback( + GLFWwindow* window, int key, int scancode, int action, int mods); + + static void mouse_callback( + GLFWwindow* window, int key, int action, int mods); + + friend class Engine; +}; + +} + +#define KEY_SPACE 32 +#define KEY_APOSTROPHE 39 /* ' */ +#define KEY_COMMA 44 /* , */ +#define KEY_MINUS 45 /* - */ +#define KEY_PERIOD 46 /* . */ +#define KEY_SLASH 47 /* / */ +#define KEY_0 48 +#define KEY_1 49 +#define KEY_2 50 +#define KEY_3 51 +#define KEY_4 52 +#define KEY_5 53 +#define KEY_6 54 +#define KEY_7 55 +#define KEY_8 56 +#define KEY_9 57 +#define KEY_SEMICOLON 59 /* ; */ +#define KEY_EQUAL 61 /* = */ +#define KEY_A 65 +#define KEY_B 66 +#define KEY_C 67 +#define KEY_D 68 +#define KEY_E 69 +#define KEY_F 70 +#define KEY_G 71 +#define KEY_H 72 +#define KEY_I 73 +#define KEY_J 74 +#define KEY_K 75 +#define KEY_L 76 +#define KEY_M 77 +#define KEY_N 78 +#define KEY_O 79 +#define KEY_P 80 +#define KEY_Q 81 +#define KEY_R 82 +#define KEY_S 83 +#define KEY_T 84 +#define KEY_U 85 +#define KEY_V 86 +#define KEY_W 87 +#define KEY_X 88 +#define KEY_Y 89 +#define KEY_Z 90 +#define KEY_LEFT_BRACKET 91 /* [ */ +#define KEY_BACKSLASH 92 /* \ */ +#define KEY_RIGHT_BRACKET 93 /* ] */ +#define KEY_GRAVE_ACCENT 96 /* ` */ +#define KEY_WORLD_1 161 /* non-US #1 */ +#define KEY_WORLD_2 162 /* non-US #2 */ + +/* Function keys */ +#define KEY_ESCAPE 256 +#define KEY_ENTER 257 +#define KEY_TAB 258 +#define KEY_BACKSPACE 259 +#define KEY_INSERT 260 +#define KEY_DELETE 261 +#define KEY_RIGHT 262 +#define KEY_LEFT 263 +#define KEY_DOWN 264 +#define KEY_UP 265 +#define KEY_PAGE_UP 266 +#define KEY_PAGE_DOWN 267 +#define KEY_HOME 268 +#define KEY_END 269 +#define KEY_CAPS_LOCK 280 +#define KEY_SCROLL_LOCK 281 +#define KEY_NUM_LOCK 282 +#define KEY_PRINT_SCREEN 283 +#define KEY_PAUSE 284 +#define KEY_F1 290 +#define KEY_F2 291 +#define KEY_F3 292 +#define KEY_F4 293 +#define KEY_F5 294 +#define KEY_F6 295 +#define KEY_F7 296 +#define KEY_F8 297 +#define KEY_F9 298 +#define KEY_F10 299 +#define KEY_F11 300 +#define KEY_F12 301 +#define KEY_F13 302 +#define KEY_F14 303 +#define KEY_F15 304 +#define KEY_F16 305 +#define KEY_F17 306 +#define KEY_F18 307 +#define KEY_F19 308 +#define KEY_F20 309 +#define KEY_F21 310 +#define KEY_F22 311 +#define KEY_F23 312 +#define KEY_F24 313 +#define KEY_F25 314 +#define KEY_KP_0 320 +#define KEY_KP_1 321 +#define KEY_KP_2 322 +#define KEY_KP_3 323 +#define KEY_KP_4 324 +#define KEY_KP_5 325 +#define KEY_KP_6 326 +#define KEY_KP_7 327 +#define KEY_KP_8 328 +#define KEY_KP_9 329 +#define KEY_KP_DECIMAL 330 +#define KEY_KP_DIVIDE 331 +#define KEY_KP_MULTIPLY 332 +#define KEY_KP_SUBTRACT 333 +#define KEY_KP_ADD 334 +#define KEY_KP_ENTER 335 +#define KEY_KP_EQUAL 336 +#define KEY_LEFT_SHIFT 340 +#define KEY_LEFT_CONTROL 341 +#define KEY_LEFT_ALT 342 +#define KEY_LEFT_SUPER 343 +#define KEY_RIGHT_SHIFT 344 +#define KEY_RIGHT_CONTROL 345 +#define KEY_RIGHT_ALT 346 +#define KEY_RIGHT_SUPER 347 +#define KEY_MENU 348 + +#define MOUSE_BUTTON_ONE 0 +#define MOUSE_BUTTON_TWO 1 +#define MOUSE_BUTTON_THREE 2
\ No newline at end of file diff --git a/engine/xe_pipeline.cpp b/engine/xe_pipeline.cpp index 633548f..7479dcb 100755 --- a/engine/xe_pipeline.cpp +++ b/engine/xe_pipeline.cpp @@ -1,7 +1,5 @@ #include "xe_pipeline.hpp" -#include "xe_model.hpp" - #include <cstdint> #include <fstream> #include <stdexcept> diff --git a/engine/xe_pipeline.hpp b/engine/xe_pipeline.hpp index 14df508..269a171 100755 --- a/engine/xe_pipeline.hpp +++ b/engine/xe_pipeline.hpp @@ -1,6 +1,7 @@ #pragma once #include "xe_device.hpp" +#include "xe_model.hpp" #include <cstdint> #include <string> diff --git a/engine/xe_render_system.cpp b/engine/xe_render_system.cpp index cf30f24..a308874 100644 --- a/engine/xe_render_system.cpp +++ b/engine/xe_render_system.cpp @@ -1,19 +1,5 @@ #include "xe_render_system.hpp" -#include <vulkan/vulkan.h> -#include "xe_device.hpp" -#include "xe_pipeline.hpp" -#include "xe_game_object.hpp" -#include "xe_swap_chain.hpp" -#include "xe_renderer.hpp" -#include "xe_descriptors.hpp" -#include "xe_engine.hpp" - -#include <memory> -#include <stdexcept> - -#include <iostream> - namespace xe { RenderSystem::RenderSystem( diff --git a/engine/xe_render_system.hpp b/engine/xe_render_system.hpp index fd5043f..c783610 100644 --- a/engine/xe_render_system.hpp +++ b/engine/xe_render_system.hpp @@ -1,15 +1,17 @@ #pragma once -#include <vulkan/vulkan.h> #include "xe_device.hpp" #include "xe_pipeline.hpp" #include "xe_game_object.hpp" -#include "xe_descriptors.hpp" +#include "xe_swap_chain.hpp" #include "xe_renderer.hpp" +#include "xe_descriptors.hpp" #include "xe_engine.hpp" -#include "xe_image.hpp" +#include <vulkan/vulkan.h> #include <memory> +#include <stdexcept> +#include <iostream> #include <map> #include <vector> diff --git a/engine/xe_renderer.cpp b/engine/xe_renderer.cpp index 2cc3303..fb19846 100644 --- a/engine/xe_renderer.cpp +++ b/engine/xe_renderer.cpp @@ -1,17 +1,5 @@ #include "xe_renderer.hpp" -#include "xe_device.hpp" -#include "xe_game_object.hpp" -#include "xe_swap_chain.hpp" -#include "xe_descriptors.hpp" -#include "xe_window.hpp" -#include <memory> -#include <vulkan/vulkan_core.h> - -#include <array> -#include <cassert> -#include <stdexcept> - namespace xe { Renderer::Renderer(Window& window, Device& device) : xeWindow{window}, xeDevice{device} { diff --git a/engine/xe_renderer.hpp b/engine/xe_renderer.hpp index 58b782d..547de1e 100644 --- a/engine/xe_renderer.hpp +++ b/engine/xe_renderer.hpp @@ -1,13 +1,16 @@ #pragma once +#include "xe_device.hpp" +#include "xe_game_object.hpp" #include "xe_swap_chain.hpp" +#include "xe_descriptors.hpp" #include "xe_window.hpp" -#include "xe_device.hpp" -#include "xe_model.hpp" -#include <memory> -#include <vector> +#include <array> #include <cassert> +#include <stdexcept> +#include <memory> +#include <vulkan/vulkan_core.h> namespace xe { class Renderer { diff --git a/engine/xe_sound.cpp b/engine/xe_sound.cpp index e458356..a6c0974 100644 --- a/engine/xe_sound.cpp +++ b/engine/xe_sound.cpp @@ -1,9 +1,5 @@ #include "xe_sound.hpp" -#include <vector> -#include <stdexcept> -#include <iostream> - namespace xe { Sound::Sound(const std::string& filename) { diff --git a/engine/xe_sound.hpp b/engine/xe_sound.hpp index 4b14589..a891ea3 100644 --- a/engine/xe_sound.hpp +++ b/engine/xe_sound.hpp @@ -4,6 +4,9 @@ #include <AL/alc.h> #include <AL/alut.h> #include <string> +#include <vector> +#include <stdexcept> +#include <iostream> #define GLM_FORCE_RADIANS #define GLM_FORCE_DEPTH_ZERO_TO_ONE diff --git a/engine/xe_swap_chain.cpp b/engine/xe_swap_chain.cpp index 6f15fda..7044226 100755 --- a/engine/xe_swap_chain.cpp +++ b/engine/xe_swap_chain.cpp @@ -1,14 +1,5 @@ #include "xe_swap_chain.hpp" -#include <array> -#include <cstdlib> -#include <cstring> -#include <iostream> -#include <limits> -#include <memory> -#include <set> -#include <stdexcept> - namespace xe { bool SwapChain::initialSwapChainCreated = false; diff --git a/engine/xe_swap_chain.hpp b/engine/xe_swap_chain.hpp index 2d4e81b..dad3baf 100755 --- a/engine/xe_swap_chain.hpp +++ b/engine/xe_swap_chain.hpp @@ -4,10 +4,14 @@ #include <vulkan/vulkan.h> +#include <array> +#include <cstdlib> +#include <cstring> +#include <iostream> +#include <limits> #include <memory> -#include <string> -#include <vector> -#include <vulkan/vulkan_core.h> +#include <set> +#include <stdexcept> namespace xe { diff --git a/engine/xe_window.cpp b/engine/xe_window.cpp index 8aaed9d..0f9a2d1 100755 --- a/engine/xe_window.cpp +++ b/engine/xe_window.cpp @@ -1,8 +1,4 @@ #include "xe_window.hpp" -#include <GLFW/glfw3.h> -#include <stdexcept> - -#include <stdexcept> namespace xe { diff --git a/engine/xe_window.hpp b/engine/xe_window.hpp index e449e34..83b7c98 100755 --- a/engine/xe_window.hpp +++ b/engine/xe_window.hpp @@ -2,9 +2,12 @@ #include <vulkan/vulkan_core.h> #define GLFW_INCLUDE_VULKAN -#include <GLFW/glfw3.h> +#include <GLFW/glfw3.h> +#include <GLFW/glfw3.h> +#include <stdexcept> #include <string> + namespace xe { class Window { @@ -33,6 +36,7 @@ class Window { std::string windowName; GLFWwindow *window; + }; }
\ No newline at end of file |