From e884d68ce02a530e6d0ea6cb82b5f9968853a0ff Mon Sep 17 00:00:00 2001 From: Riyyi Date: Wed, 13 Jan 2021 20:37:18 +0100 Subject: [PATCH] Add camera component --- inferno/src/inferno/scene/components.cpp | 19 +++++++++++++++ inferno/src/inferno/scene/components.h | 31 +++++++++++++++++++++--- 2 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 inferno/src/inferno/scene/components.cpp diff --git a/inferno/src/inferno/scene/components.cpp b/inferno/src/inferno/scene/components.cpp new file mode 100644 index 0000000..1325d22 --- /dev/null +++ b/inferno/src/inferno/scene/components.cpp @@ -0,0 +1,19 @@ +#include "inferno/scene/components.h" + +namespace Inferno { + + const LogStream& operator<<(const LogStream& stream, const glm::vec3& value) + { + stream << "{ " << value.x << ", " << value.y << ", " << value.z << " }"; + return stream; + } + + const LogStream& operator<<(const LogStream& stream, const glm::mat4& value) + { + stream << "mat4 " + << value[0] << "\n " << value[1] << "\n " + << value[2] << "\n " << value[3]; + return stream; + } + +} diff --git a/inferno/src/inferno/scene/components.h b/inferno/src/inferno/scene/components.h index 1fb0dfb..a531135 100644 --- a/inferno/src/inferno/scene/components.h +++ b/inferno/src/inferno/scene/components.h @@ -3,7 +3,10 @@ #include // std::string -#include "glm/ext/vector_float3.hpp" // glm::vec3 +#include "glm/ext/matrix_float4x4.hpp" // glm::mat4 +#include "glm/ext/vector_float3.hpp" // glm::vec3 + +#include "inferno/log.h" namespace Inferno { @@ -18,11 +21,31 @@ namespace Inferno { }; struct TransformComponent { - glm::vec3 translate = { 0.0f, 0.0f, 0.0f }; - glm::vec3 rotate = { 0.0f, 0.0f, 0.0f } ; - glm::vec3 scale = { 1.0f, 1.0f, 1.0f }; + glm::vec3 translate { 0.0f, 0.0f, 0.0f }; + glm::vec3 rotate { 0.0f, 0.0f, 0.0f } ; + glm::vec3 scale { 1.0f, 1.0f, 1.0f }; + glm::mat4 transform { 1.0f }; // Identity matrix + }; + + struct OrthographicCameraComponment { + float zoomLevel = 1.0f; + glm::vec3 rotateAxis { 0.0f, 0.0f, 1.0f }; + glm::mat4 projection { 1.0f }; // Identity matrix }; + struct PerspectiveCameraComponent { + float fov = 90.0f; + float pitch = 0.0f; + float yaw = -90.0f; + glm::vec3 up { 0.0f, 1.0f, 0.0f }; + glm::mat4 projection { 1.0f }; // Identity matrix + }; + +// ---------------------------------------- + + const LogStream& operator<<(const LogStream& stream, const glm::vec3& value); + const LogStream& operator<<(const LogStream& stream, const glm::mat4& value); + } #endif // COMPONENTS_H