summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authortylermurphy534 <tylermurphy534@gmail.com>2022-09-25 12:13:07 -0400
committertylermurphy534 <tylermurphy534@gmail.com>2022-09-25 12:13:07 -0400
commitffd2d8220d57587da9a73183f9aa1bdaff303f3f (patch)
tree32202311cfb74c2a2d522b7192480bed87b1cab8 /engine
parentvertex data no longer hard coded (diff)
parentdelete unused folder (diff)
downloadminecraftvulkan-ffd2d8220d57587da9a73183f9aa1bdaff303f3f.tar.gz
minecraftvulkan-ffd2d8220d57587da9a73183f9aa1bdaff303f3f.tar.bz2
minecraftvulkan-ffd2d8220d57587da9a73183f9aa1bdaff303f3f.zip
merge in input
Diffstat (limited to 'engine')
-rw-r--r--engine/xe_engine.cpp9
-rw-r--r--engine/xe_engine.hpp10
-rw-r--r--engine/xe_input.cpp46
-rw-r--r--engine/xe_input.hpp167
-rwxr-xr-xengine/xe_pipeline.cpp2
-rwxr-xr-xengine/xe_pipeline.hpp1
-rw-r--r--engine/xe_render_system.cpp14
-rw-r--r--engine/xe_render_system.hpp8
-rw-r--r--engine/xe_renderer.cpp12
-rw-r--r--engine/xe_renderer.hpp11
-rw-r--r--engine/xe_sound.cpp4
-rw-r--r--engine/xe_sound.hpp3
-rwxr-xr-xengine/xe_swap_chain.cpp9
-rwxr-xr-xengine/xe_swap_chain.hpp10
-rwxr-xr-xengine/xe_window.cpp4
-rwxr-xr-xengine/xe_window.hpp6
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