diff --git a/.gitmodules b/.gitmodules index b44e47387fc30a41c3f5c8d09b5ad525b354f233..97fc7d9d689b41b55f2c3308a086f8f167869258 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "lib/glfw"] path = lib/glfw url = https://github.com/glfw/glfw.git +[submodule "modules/camera/lib/glm"] + path = modules/camera/lib/glm + url = https://github.com/g-truc/glm.git diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index 3309d860b300dd378460338d9fece48066c38993..e9911a597d036e1123628bfc50b2fb7718e7a58c 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -1,3 +1,4 @@ # Add new modules here: +add_subdirectory(camera) add_subdirectory(testing) diff --git a/modules/camera/CMakeLists.txt b/modules/camera/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..061c22e265b6ec9deb0a170dd54c8a0f8765d20d --- /dev/null +++ b/modules/camera/CMakeLists.txt @@ -0,0 +1,31 @@ +cmake_minimum_required(VERSION 3.16) +project(vkcv_camera) + +# setting c++ standard for the project +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(vkcv_camera_source ${PROJECT_SOURCE_DIR}/src) +set(vkcv_camera_include ${PROJECT_SOURCE_DIR}/include) + +set(vkcv_camera_sources + ${vkcv_camera_include}/vkcv/camera/Camera.hpp + ${vkcv_camera_source}/vkcv/camera/Camera.cpp + ${vkcv_camera_include}/vkcv/camera/TrackballCamera.hpp + ${vkcv_camera_source}/vkcv/camera/TrackballCamera.cpp +) + +# adding source files to the project +add_library(vkcv_camera STATIC ${vkcv_camera_sources}) + +# Setup some path variables to load libraries +set(vkcv_camera_lib lib) +set(vkcv_camera_lib_path ${PROJECT_SOURCE_DIR}/${vkcv_camera_lib}) + +include(config/GLM.cmake) + +target_link_libraries(vkcv_camera PUBLIC ${vkcv_camera_libraries}) + +# add the own include directory for public headers +target_include_directories(vkcv_camera BEFORE PUBLIC ${vkcv_camera_include} ${vkcv_camera_includes}) + diff --git a/modules/camera/config/GLM.cmake b/modules/camera/config/GLM.cmake new file mode 100644 index 0000000000000000000000000000000000000000..c4d14392ef0ea24243a45b19cd8583d90d3267be --- /dev/null +++ b/modules/camera/config/GLM.cmake @@ -0,0 +1,15 @@ + +find_package(glm QUIET) + +if (glm_FOUND) + list(APPEND vkcv_camera_includes ${GLM_INCLUDE_DIRS}) + list(APPEND vkcv_camera_libraries glm) +else() + if (EXISTS "${vkcv_camera_lib_path}/glm") + add_subdirectory(${vkcv_camera_lib}/glm) + + list(APPEND vkcv_camera_libraries glm) + else() + message(WARNING "GLM is required..! Update the submodules!") + endif () +endif () diff --git a/modules/testing/include/vkcv/camera/Camera.hpp b/modules/camera/include/vkcv/camera/Camera.hpp similarity index 86% rename from modules/testing/include/vkcv/camera/Camera.hpp rename to modules/camera/include/vkcv/camera/Camera.hpp index 1f0cd5803c381097003e4c2302c79b3cf42253bd..90a2b003c9381093e7d83678d99a55e17d16eb24 100644 --- a/modules/testing/include/vkcv/camera/Camera.hpp +++ b/modules/camera/include/vkcv/camera/Camera.hpp @@ -1,6 +1,5 @@ #pragma once -#include <GLFW/glfw3.h> #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> #include <glm/gtc/matrix_access.hpp> @@ -9,8 +8,6 @@ namespace vkcv { class Camera { protected: - GLFWwindow *m_window; - glm::mat4 m_view, m_projection; int m_width, m_height; @@ -26,8 +23,6 @@ namespace vkcv { ~Camera(); - virtual void update(GLFWwindow *window) {}; - void setPerspective(float fov, float ratio, float near, float far); const glm::mat4 &getView(); @@ -38,7 +33,7 @@ namespace vkcv { void lookAt(glm::vec3 position, glm::vec3 center, glm::vec3 up); - const glm::mat4 &Camera::getProjection(); + const glm::mat4& getProjection(); void setProjection(const glm::mat4 projection); diff --git a/modules/testing/include/vkcv/camera/TrackballCamera.hpp b/modules/camera/include/vkcv/camera/TrackballCamera.hpp similarity index 91% rename from modules/testing/include/vkcv/camera/TrackballCamera.hpp rename to modules/camera/include/vkcv/camera/TrackballCamera.hpp index e9143e873de38ac470f8df6da10af6ba37854ec8..156ad8e4302210bc9c874dadefb31a9aa99730bc 100644 --- a/modules/testing/include/vkcv/camera/TrackballCamera.hpp +++ b/modules/camera/include/vkcv/camera/TrackballCamera.hpp @@ -1,6 +1,6 @@ #pragma once -#include "vkcv/camera/Camera.hpp" +#include "Camera.hpp" namespace vkcv { @@ -13,8 +13,6 @@ namespace vkcv { ~TrackballCamera(); - void update( GLFWwindow* window); - float getSensitivity() const; void setSensitivity(float sensitivity); diff --git a/modules/camera/lib/glm b/modules/camera/lib/glm new file mode 160000 index 0000000000000000000000000000000000000000..66062497b104ca7c297321bd0e970869b1e6ece5 --- /dev/null +++ b/modules/camera/lib/glm @@ -0,0 +1 @@ +Subproject commit 66062497b104ca7c297321bd0e970869b1e6ece5 diff --git a/modules/testing/src/vkcv/camera/Camera.cpp b/modules/camera/src/vkcv/camera/Camera.cpp similarity index 100% rename from modules/testing/src/vkcv/camera/Camera.cpp rename to modules/camera/src/vkcv/camera/Camera.cpp diff --git a/modules/testing/src/vkcv/camera/TrackballCamera.cpp b/modules/camera/src/vkcv/camera/TrackballCamera.cpp similarity index 96% rename from modules/testing/src/vkcv/camera/TrackballCamera.cpp rename to modules/camera/src/vkcv/camera/TrackballCamera.cpp index 6e2323da17db2a83be1f8bcaf957fd677c4dc3a8..880a6209c9d4ba01238caf2ce6ec0b2b63f7dea2 100644 --- a/modules/testing/src/vkcv/camera/TrackballCamera.cpp +++ b/modules/camera/src/vkcv/camera/TrackballCamera.cpp @@ -59,8 +59,8 @@ namespace vkcv{ { } - - void TrackballCamera::update( GLFWwindow* window) { + // TODO: Can be done as events... (mouseMove, mouseDown, mouseUp) + /*void TrackballCamera::update( GLFWwindow* window) { double x, y; @@ -94,7 +94,7 @@ namespace vkcv{ m_view = glm::lookAt( m_position, m_center, m_up); - } + }*/ float TrackballCamera::getSensitivity() const { return m_sensitivity; diff --git a/modules/testing/CMakeLists.txt b/modules/testing/CMakeLists.txt index 213bbb22c5ad3b83d3770df729a3dc8fd4a1d3d7..a22e547646fd4ef59860245d51365b98df59b578 100644 --- a/modules/testing/CMakeLists.txt +++ b/modules/testing/CMakeLists.txt @@ -11,21 +11,11 @@ set(vkcv_testing_include ${PROJECT_SOURCE_DIR}/include) set(vkcv_testing_sources ${vkcv_testing_include}/vkcv/testing/Test.hpp ${vkcv_testing_source}/vkcv/testing/Test.cpp - ${vkcv_testing_include}/vkcv/camera/Camera.hpp - ${vkcv_testing_source}/vkcv/camera/Camera.cpp - ${vkcv_testing_include}/vkcv/camera/TrackballCamera.hpp - ${vkcv_testing_source}/vkcv/camera/TrackballCamera.cpp - ) +) # adding source files to the project add_library(vkcv_testing STATIC ${vkcv_testing_sources}) -#include(GLM.cmake) # libglm-dev -#include(GLFW.cmake) # libglfw3-dev -find_package(glfw3 QUIET) -find_package(glm QUIET) -target_link_libraries(vkcv_testing PUBLIC glm glfw) - # add the own include directory for public headers target_include_directories(vkcv_testing BEFORE PUBLIC ${vkcv_testing_include}) diff --git a/modules/testing/GLFW.cmake b/modules/testing/GLFW.cmake deleted file mode 100644 index 1b68d8aa97ba59158a7bd805ab2470f554f705aa..0000000000000000000000000000000000000000 --- a/modules/testing/GLFW.cmake +++ /dev/null @@ -1,18 +0,0 @@ - -find_package(glfw3 QUIET) - -if (glfw3_FOUND) - list(APPEND vkcv_libraries glfw) - - message(${vkcv_config_msg} " GLFW - " ${glfw3_VERSION}) -else() - if (EXISTS "${vkcv_lib_path}/glfw") - add_subdirectory(${vkcv_lib}/glfw) - - list(APPEND vkcv_libraries glfw) - - message(${vkcv_config_msg} " GLFW - " ${glfw3_VERSION}) - else() - message(WARNING "GLFW is required..! Update the submodules!") - endif () -endif () diff --git a/modules/testing/GLM.cmake b/modules/testing/GLM.cmake deleted file mode 100644 index 151886dcf38745bdd2bda3e7ffcb6c8aa6bac0a1..0000000000000000000000000000000000000000 --- a/modules/testing/GLM.cmake +++ /dev/null @@ -1,22 +0,0 @@ -find_package(glm REQUIRED) - -if (glm_FOUND) - -# list(APPEND vkcv_includes ${GLM_INCLUDE_DIRS}) -# list(APPEND vkcv_libraries glm) - message(STATUS "GLM included at ${GLM_INCLUDE_DIR}") - message(STATUS ${GLM_INCLUDE_DIR}) - message(STATUS ${GLM_INCLUDE_DIRS}) - message(STATUS ${GLM_LIBRARIES}) - message(${vkcv_config_msg} " GLM - " ${glm_VERSION}) -else() - if (EXISTS "${vkcv_lib_path}/glfw") - add_subdirectory(${vkcv_lib}/glfw) - - list(APPEND vkcv_libraries glfw) - - message(${vkcv_config_msg} " GLFW - " ${glfw3_VERSION}) - else() - message(WARNING "GLFW is required..! Update the submodules!") - endif () -endif () \ No newline at end of file