From b402506a1153479424fede28924a57df5d200bdd Mon Sep 17 00:00:00 2001 From: Riyyi Date: Thu, 28 Jan 2021 15:33:24 +0100 Subject: [PATCH] Split components into separate files --- inferno/src/inferno/application.cpp | 1 - .../src/inferno/components/cameracomponent.h | 32 ++++++ .../inferno/components/luascriptcomponent.h | 21 ++++ .../components/nativescriptcomponent.h | 33 ++++++ .../src/inferno/components/spritecomponent.h | 19 ++++ inferno/src/inferno/components/tagcomponent.h | 20 ++++ .../transformcomponent.cpp} | 2 +- .../inferno/components/transformcomponent.h | 26 +++++ inferno/src/inferno/render/renderer.h | 2 +- inferno/src/inferno/scene/components.h | 104 ------------------ inferno/src/inferno/scene/scene.cpp | 7 +- inferno/src/inferno/scene/scene.h | 1 - .../src/inferno/script/cameracontroller.cpp | 4 +- inferno/src/inferno/script/cameracontroller.h | 3 +- inferno/src/inferno/script/luascript.cpp | 5 +- inferno/src/inferno/script/registration.cpp | 7 +- inferno/src/inferno/systems/camera.h | 5 +- inferno/src/inferno/systems/render.cpp | 3 +- inferno/src/inferno/systems/script.cpp | 4 +- inferno/src/inferno/systems/transform.cpp | 2 +- 20 files changed, 181 insertions(+), 120 deletions(-) create mode 100644 inferno/src/inferno/components/cameracomponent.h create mode 100644 inferno/src/inferno/components/luascriptcomponent.h create mode 100644 inferno/src/inferno/components/nativescriptcomponent.h create mode 100644 inferno/src/inferno/components/spritecomponent.h create mode 100644 inferno/src/inferno/components/tagcomponent.h rename inferno/src/inferno/{scene/components.cpp => components/transformcomponent.cpp} (94%) create mode 100644 inferno/src/inferno/components/transformcomponent.h delete mode 100644 inferno/src/inferno/scene/components.h diff --git a/inferno/src/inferno/application.cpp b/inferno/src/inferno/application.cpp index 1b6f38a..e41da50 100644 --- a/inferno/src/inferno/application.cpp +++ b/inferno/src/inferno/application.cpp @@ -14,7 +14,6 @@ #include "inferno/render/renderer.h" #include "inferno/render/shader.h" #include "inferno/render/texture.h" -#include "inferno/scene/components.h" #include "inferno/scene/scene.h" #include "inferno/settings.h" #include "inferno/time.h" diff --git a/inferno/src/inferno/components/cameracomponent.h b/inferno/src/inferno/components/cameracomponent.h new file mode 100644 index 0000000..7850559 --- /dev/null +++ b/inferno/src/inferno/components/cameracomponent.h @@ -0,0 +1,32 @@ +#ifndef CAMERA_COMPONENT_H +#define CAMERA_COMPONENT_H + +#include "glm/ext/matrix_float4x4.hpp" // glm::mat4 +#include "glm/ext/vector_float3.hpp" // glm::vec3 + +namespace Inferno { + + enum CameraType { + Orthographic, + Perspective, + }; + + struct CameraComponent { + CameraType type = CameraType::Perspective; + + // Orthographic + float zoomLevel = 1.0f; + glm::vec3 rotateAxis { 0.0f, 0.0f, 1.0f }; + + // Perspective + 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 + }; + +} + +#endif // CAMERA_COMPONENT_H diff --git a/inferno/src/inferno/components/luascriptcomponent.h b/inferno/src/inferno/components/luascriptcomponent.h new file mode 100644 index 0000000..a666afe --- /dev/null +++ b/inferno/src/inferno/components/luascriptcomponent.h @@ -0,0 +1,21 @@ +#ifndef LUA_SCRIPT_COMPONENT_H +#define LUA_SCRIPT_COMPONENT_H + +#include // std::string + +namespace Inferno { + + class LuaScript; + + struct LuaScriptComponent { + LuaScript* instance = nullptr; + std::string path; + + // Dont allow manually setting instance during construction + LuaScriptComponent() {} + LuaScriptComponent(const std::string& path) + : path(path) {} + }; +} + +#endif // LUA_SCRIPT_COMPONENT_H diff --git a/inferno/src/inferno/components/nativescriptcomponent.h b/inferno/src/inferno/components/nativescriptcomponent.h new file mode 100644 index 0000000..ec8cd7d --- /dev/null +++ b/inferno/src/inferno/components/nativescriptcomponent.h @@ -0,0 +1,33 @@ +#ifndef NATIVE_SCRIPT_COMPONENT_H +#define NATIVE_SCRIPT_COMPONENT_H + +#include "inferno/assert.h" +#include "inferno/script/nativescript.h" + +namespace Inferno { + + struct NativeScriptComponent { + NativeScript* instance = nullptr; + + NativeScript* (*initialize)(); + + // Dont allow manually setting instance during construction + NativeScriptComponent() {} + + template + void bind() + { + ASSERT(instance == nullptr, "NativeScript already bound"); + initialize = []() { return static_cast(new T()); }; + } + + void destroy() { + ASSERT(instance, "Attempting to destroy an uninitialized NativeScript"); + delete instance; + instance = nullptr; + } + }; + +} + +#endif // NATIVE_SCRIPT_COMPONENT_H diff --git a/inferno/src/inferno/components/spritecomponent.h b/inferno/src/inferno/components/spritecomponent.h new file mode 100644 index 0000000..3621e27 --- /dev/null +++ b/inferno/src/inferno/components/spritecomponent.h @@ -0,0 +1,19 @@ +#ifndef SPRITE_COMPONENT_H +#define SPRITE_COMPONENT_H + +#include // std::shared_ptr + +#include "glm/ext/vector_float4.hpp" // glm::vec4 + +#include "inferno/render/texture.h" + +namespace Inferno { + + struct SpriteComponent { + glm::vec4 color { 1.0f }; + std::shared_ptr texture; + }; + +} + +#endif // SPRITE_COMPONENT_H diff --git a/inferno/src/inferno/components/tagcomponent.h b/inferno/src/inferno/components/tagcomponent.h new file mode 100644 index 0000000..74c2a9e --- /dev/null +++ b/inferno/src/inferno/components/tagcomponent.h @@ -0,0 +1,20 @@ +#ifndef TAG_COMPONENT_H +#define TAG_COMPONENT_H + +#include // std::string + +namespace Inferno { + + struct TagComponent { + std::string tag; + + TagComponent() = default; + TagComponent(const std::string& tag) + : tag(tag) {} + + operator const std::string&() const { return tag; } + }; + +} + +#endif // TAG_COMPONENT_H diff --git a/inferno/src/inferno/scene/components.cpp b/inferno/src/inferno/components/transformcomponent.cpp similarity index 94% rename from inferno/src/inferno/scene/components.cpp rename to inferno/src/inferno/components/transformcomponent.cpp index a219ca9..ebd37c0 100644 --- a/inferno/src/inferno/scene/components.cpp +++ b/inferno/src/inferno/components/transformcomponent.cpp @@ -1,4 +1,4 @@ -#include "inferno/scene/components.h" +#include "inferno/components/transformcomponent.h" namespace Inferno { diff --git a/inferno/src/inferno/components/transformcomponent.h b/inferno/src/inferno/components/transformcomponent.h new file mode 100644 index 0000000..3e0c299 --- /dev/null +++ b/inferno/src/inferno/components/transformcomponent.h @@ -0,0 +1,26 @@ +#ifndef TRANSFORM_COMPONENT_H +#define TRANSFORM_COMPONENT_H + +#include "glm/ext/matrix_float4x4.hpp" // glm::mat4 +#include "glm/ext/vector_float3.hpp" // glm::vec3 + +#include "inferno/io/log.h" + +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::mat4 transform { 1.0f }; // Identity matrix + }; + +// ---------------------------------------- + + const LogStream& operator<<(const LogStream& stream, const glm::vec3& value); + const LogStream& operator<<(const LogStream& stream, const glm::vec4& value); + const LogStream& operator<<(const LogStream& stream, const glm::mat4& value); + const LogStream& operator<<(const LogStream& stream, const TransformComponent& value); +} + +#endif // TRANSFORM_COMPONENT_H diff --git a/inferno/src/inferno/render/renderer.h b/inferno/src/inferno/render/renderer.h index 943f7ed..b6fc83d 100644 --- a/inferno/src/inferno/render/renderer.h +++ b/inferno/src/inferno/render/renderer.h @@ -9,7 +9,7 @@ #include "glm/ext/vector_float3.hpp" // glm::vec3 #include "glm/ext/vector_float4.hpp" // glm::vec4 -#include "inferno/scene/components.h" +#include "inferno/components/transformcomponent.h" namespace Inferno { diff --git a/inferno/src/inferno/scene/components.h b/inferno/src/inferno/scene/components.h deleted file mode 100644 index cc50c3d..0000000 --- a/inferno/src/inferno/scene/components.h +++ /dev/null @@ -1,104 +0,0 @@ -#ifndef COMPONENTS_H -#define COMPONENTS_H - -#include // std::shared_ptr -#include // std::string -#include // std::function - -#include "glm/ext/matrix_float4x4.hpp" // glm::mat4 -#include "glm/ext/vector_float3.hpp" // glm::vec3 - -#include "inferno/assert.h" -#include "inferno/io/log.h" -#include "inferno/render/texture.h" -#include "inferno/script/nativescript.h" - -namespace Inferno { - - class LuaScript; - - struct TagComponent { - std::string tag; - - TagComponent() = default; - TagComponent(const std::string& tag) - : tag(tag) {} - - operator const std::string&() const { return tag; } - }; - - 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::mat4 transform { 1.0f }; // Identity matrix - }; - - enum CameraType { - Orthographic, - Perspective, - }; - - struct CameraComponent { - CameraType type = CameraType::Perspective; - - // Orthographic - float zoomLevel = 1.0f; - glm::vec3 rotateAxis { 0.0f, 0.0f, 1.0f }; - - // Perspective - 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 - }; - - struct SpriteComponent { - glm::vec4 color { 1.0f }; - std::shared_ptr texture; - }; - - struct NativeScriptComponent { - NativeScript* instance = nullptr; - - NativeScript* (*initialize)(); - - // Dont allow manually setting instance during construction - NativeScriptComponent() {} - - template - void bind() - { - ASSERT(instance == nullptr, "NativeScript already bound"); - initialize = []() { return static_cast(new T()); }; - } - - void destroy() { - ASSERT(instance, "Attempting to destroy an uninitialized NativeScript"); - delete instance; - instance = nullptr; - } - }; - - struct LuaScriptComponent { - LuaScript* instance = nullptr; - std::string path; - - // Dont allow manually setting instance during construction - LuaScriptComponent() {} - LuaScriptComponent(const std::string& path) - : path(path) {} - }; - -// ---------------------------------------- - - const LogStream& operator<<(const LogStream& stream, const TransformComponent& value); - const LogStream& operator<<(const LogStream& stream, const glm::vec3& value); - const LogStream& operator<<(const LogStream& stream, const glm::vec4& value); - const LogStream& operator<<(const LogStream& stream, const glm::mat4& value); - -} - -#endif // COMPONENTS_H diff --git a/inferno/src/inferno/scene/scene.cpp b/inferno/src/inferno/scene/scene.cpp index 41e3708..f7c17d6 100644 --- a/inferno/src/inferno/scene/scene.cpp +++ b/inferno/src/inferno/scene/scene.cpp @@ -1,4 +1,9 @@ -#include "inferno/scene/components.h" +#include "inferno/assert.h" +#include "inferno/components/cameracomponent.h" +#include "inferno/components/luascriptcomponent.h" +#include "inferno/components/nativescriptcomponent.h" +#include "inferno/components/spritecomponent.h" +#include "inferno/components/tagcomponent.h" #include "inferno/scene/scene.h" #include "inferno/script/cameracontroller.h" #include "inferno/script/nativescript.h" diff --git a/inferno/src/inferno/scene/scene.h b/inferno/src/inferno/scene/scene.h index 256fc92..ee35159 100644 --- a/inferno/src/inferno/scene/scene.h +++ b/inferno/src/inferno/scene/scene.h @@ -12,7 +12,6 @@ namespace Inferno { class Camera; - class Entity; class Texture; class Scene { diff --git a/inferno/src/inferno/script/cameracontroller.cpp b/inferno/src/inferno/script/cameracontroller.cpp index 8d7b5e6..b33348b 100644 --- a/inferno/src/inferno/script/cameracontroller.cpp +++ b/inferno/src/inferno/script/cameracontroller.cpp @@ -1,7 +1,9 @@ #include "glm/ext/matrix_transform.hpp" // glm::radians -#include "inferno/keycodes.h" +#include "inferno/components/cameracomponent.h" +#include "inferno/components/transformcomponent.h" #include "inferno/io/input.h" +#include "inferno/keycodes.h" #include "inferno/script/cameracontroller.h" namespace Inferno { diff --git a/inferno/src/inferno/script/cameracontroller.h b/inferno/src/inferno/script/cameracontroller.h index bcff880..6b70566 100644 --- a/inferno/src/inferno/script/cameracontroller.h +++ b/inferno/src/inferno/script/cameracontroller.h @@ -8,11 +8,12 @@ #define NEAR_PLANE 0.1f #define FAR_PLANE 100.0f -#include "inferno/scene/components.h" #include "inferno/script/nativescript.h" namespace Inferno { + struct CameraComponent; + class CameraController final : public NativeScript { public: diff --git a/inferno/src/inferno/script/luascript.cpp b/inferno/src/inferno/script/luascript.cpp index 37bd34e..4eafa9f 100644 --- a/inferno/src/inferno/script/luascript.cpp +++ b/inferno/src/inferno/script/luascript.cpp @@ -1,7 +1,10 @@ #include "sol/unsafe_function_result.hpp" +#include "inferno/components/cameracomponent.h" +#include "inferno/components/spritecomponent.h" +#include "inferno/components/tagcomponent.h" +#include "inferno/components/transformcomponent.h" #include "inferno/io/file.h" -#include "inferno/scene/components.h" #include "inferno/scene/scene.h" #include "inferno/script/luascript.h" #include "inferno/script/registration.h" diff --git a/inferno/src/inferno/script/registration.cpp b/inferno/src/inferno/script/registration.cpp index f3a5e9d..3d59e46 100644 --- a/inferno/src/inferno/script/registration.cpp +++ b/inferno/src/inferno/script/registration.cpp @@ -3,9 +3,12 @@ #include "glm/ext/vector_float4.hpp" // glm::vec4 #include "glm/ext/matrix_transform.hpp" // glm::radians -#include "inferno/keycodes.h" +#include "inferno/components/cameracomponent.h" +#include "inferno/components/spritecomponent.h" +#include "inferno/components/tagcomponent.h" +#include "inferno/components/transformcomponent.h" #include "inferno/io/input.h" -#include "inferno/scene/components.h" +#include "inferno/keycodes.h" #include "inferno/script/registration.h" namespace Inferno { diff --git a/inferno/src/inferno/systems/camera.h b/inferno/src/inferno/systems/camera.h index f507c61..096182a 100644 --- a/inferno/src/inferno/systems/camera.h +++ b/inferno/src/inferno/systems/camera.h @@ -12,12 +12,11 @@ #include "entt/entity/registry.hpp" // entt::entity, entt::registry -#include "inferno/scene/components.h" +#include "inferno/components/cameracomponent.h" +#include "inferno/components/transformcomponent.h" namespace Inferno { - class Entity; - class CameraSystem { public: void initialize(); diff --git a/inferno/src/inferno/systems/render.cpp b/inferno/src/inferno/systems/render.cpp index f046b72..13b4d4d 100644 --- a/inferno/src/inferno/systems/render.cpp +++ b/inferno/src/inferno/systems/render.cpp @@ -1,9 +1,10 @@ #include "glm/ext/matrix_transform.hpp" // glm::translate, glm::rotate, glm::scale, glm::radians #include "inferno/assert.h" +#include "inferno/components/spritecomponent.h" +#include "inferno/components/transformcomponent.h" #include "inferno/io/log.h" #include "inferno/render/renderer.h" -#include "inferno/scene/components.h" #include "inferno/systems/render.h" namespace Inferno { diff --git a/inferno/src/inferno/systems/script.cpp b/inferno/src/inferno/systems/script.cpp index ff0a22a..af792a9 100644 --- a/inferno/src/inferno/systems/script.cpp +++ b/inferno/src/inferno/systems/script.cpp @@ -1,8 +1,10 @@ #include "entt/entity/registry.hpp" // entt::entity, entt::registry #include "inferno/assert.h" +#include "inferno/components/luascriptcomponent.h" +#include "inferno/components/nativescriptcomponent.h" +#include "inferno/components/transformcomponent.h" #include "inferno/io/log.h" -#include "inferno/scene/components.h" #include "inferno/scene/scene.h" #include "inferno/script/luascript.h" #include "inferno/script/nativescript.h" diff --git a/inferno/src/inferno/systems/transform.cpp b/inferno/src/inferno/systems/transform.cpp index 319b675..f3cf4cc 100644 --- a/inferno/src/inferno/systems/transform.cpp +++ b/inferno/src/inferno/systems/transform.cpp @@ -1,8 +1,8 @@ #include "glm/ext/matrix_transform.hpp" // glm::translate, glm::rotate, glm::scale, glm::radians #include "inferno/assert.h" +#include "inferno/components/transformcomponent.h" #include "inferno/io/log.h" -#include "inferno/scene/components.h" #include "inferno/systems/transform.h" namespace Inferno {