diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2022-09-23 13:20:30 -0400 |
---|---|---|
committer | Tyler Murphy <tylermurphy534@gmail.com> | 2022-09-23 13:20:30 -0400 |
commit | 9b7d14361904a9c2bceb8de335fd5da169fabd59 (patch) | |
tree | 231348855310530145f8ce4bb35931d36bd74438 /engine | |
parent | delete old files (diff) | |
download | minecraftvulkan-9b7d14361904a9c2bceb8de335fd5da169fabd59.tar.gz minecraftvulkan-9b7d14361904a9c2bceb8de335fd5da169fabd59.tar.bz2 minecraftvulkan-9b7d14361904a9c2bceb8de335fd5da169fabd59.zip |
abstract user input, refactor #include's
Diffstat (limited to 'engine')
-rw-r--r-- | engine/xe_engine.cpp | 12 | ||||
-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, 253 insertions, 66 deletions
diff --git a/engine/xe_engine.cpp b/engine/xe_engine.cpp index e137d11..0ba7df5 100644 --- a/engine/xe_engine.cpp +++ b/engine/xe_engine.cpp @@ -1,17 +1,13 @@ #include "xe_engine.hpp" -#include "xe_image.hpp" - -#include <chrono> -#include <iostream> -#include <AL/alc.h> -#include <AL/alut.h> namespace xe { -XeEngine::XeEngine(int width, int height, std::string name) : xeWindow{width, height, name}, +XeEngine::XeEngine(int width, int height, std::string name) +: xeWindow{width, height, name}, xeDevice{xeWindow}, xeRenderer{xeWindow, xeDevice}, - xeCamera{} { + xeCamera{}, + xeInput{xeWindow} { loadDescriptorPool(); alutInit(0, NULL); std::cout << "Audio device: " << alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER) << "\n"; diff --git a/engine/xe_engine.hpp b/engine/xe_engine.hpp index d86c6a9..422f4c8 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 XeEngine { @@ -22,7 +27,7 @@ class XeEngine { XeEngine(const XeEngine&) = delete; XeEngine operator=(const XeEngine&) = delete; - XeWindow& getWindow() {return xeWindow;} + XeInput& getInput() {return xeInput;} XeCamera& getCamera() {return xeCamera;} std::shared_ptr<XeModel> loadModelFromFile(const std::string &filename); @@ -44,6 +49,7 @@ class XeEngine { XeDevice xeDevice; XeRenderer xeRenderer; XeCamera xeCamera; + XeInput 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..91b9cab --- /dev/null +++ b/engine/xe_input.cpp @@ -0,0 +1,46 @@ +#include "xe_input.hpp" + +#include <GLFW/glfw3.h> + +namespace xe { + +static XeInput* _instance; + +XeInput::XeInput(XeWindow& window) : window{window} { + glfwSetKeyCallback(window.getGLFWwindow(), XeInput::key_callback); + glfwSetMouseButtonCallback(window.getGLFWwindow(), XeInput::mouse_callback); + _instance = this; +} + +bool XeInput::isKeyPressed(int key) { + return glfwGetKey(window.getGLFWwindow(), key) == GLFW_PRESS; +} + +bool XeInput::wasKeyPressed(int key) { + if(_pressed[key] == true) { + _pressed[key] = false; + return true; + } + return false; +} + +bool XeInput::wasKeyReleased(int key) { + if(_released[key] == true) { + _released[key] = false; + return true; + } + return false; +} + +void XeInput::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 XeInput::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..4465b4e --- /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 XeInput { + + public: + + bool isKeyPressed(int key); + bool wasKeyPressed(int key); + bool wasKeyReleased(int key); + + private: + + XeInput(XeWindow& window); + ~XeInput() {}; + + void setIsKeyDown(int key, bool isDown); + + std::map<int, bool> _pressed; + std::map<int, bool> _released; + XeWindow &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 XeEngine; +}; + +} + +#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 d06d09b..e9fd4d1 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 06bcf0f..5e2e1fb 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 1e638ad..e5954c7 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 { XeRenderSystem::XeRenderSystem( diff --git a/engine/xe_render_system.hpp b/engine/xe_render_system.hpp index a8b4145..098727c 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> namespace xe { diff --git a/engine/xe_renderer.cpp b/engine/xe_renderer.cpp index 1714e46..5d901b0 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 { XeRenderer::XeRenderer(XeWindow& window, XeDevice& device) : xeWindow{window}, xeDevice{device} { diff --git a/engine/xe_renderer.hpp b/engine/xe_renderer.hpp index 321a4e3..994b157 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 XeRenderer { diff --git a/engine/xe_sound.cpp b/engine/xe_sound.cpp index 07d8e7b..bd21885 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 { XeSound::XeSound(const std::string& filename) { diff --git a/engine/xe_sound.hpp b/engine/xe_sound.hpp index b2a7a14..4a50839 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 c7a0345..79da771 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 XeSwapChain::initialSwapChainCreated = false; diff --git a/engine/xe_swap_chain.hpp b/engine/xe_swap_chain.hpp index a15a5a0..bf07be4 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 2721279..ee19b92 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 bf80bd7..02f3e3d 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 XeWindow { @@ -33,6 +36,7 @@ class XeWindow { std::string windowName; GLFWwindow *window; + }; }
\ No newline at end of file |