From 03e8e111110ee5bbfd599f901592b2971ad701eb Mon Sep 17 00:00:00 2001 From: light7734 Date: Fri, 11 Jul 2025 01:16:52 +0330 Subject: [PATCH] refactor: extract ecs out of engine --- modules/CMakeLists.txt | 1 + modules/ecs/CMakeLists.txt | 2 ++ modules/ecs/include/ecs/components.hpp | 6 ++++++ .../scene => ecs/include/ecs}/components/native_script.hpp | 3 +-- .../include/ecs}/components/scriptable_entity.hpp | 3 +-- .../include/ecs}/components/sprite_renderer.hpp | 1 - .../engine/scene => ecs/include/ecs}/components/tag.hpp | 1 - .../scene => ecs/include/ecs}/components/transform.hpp | 1 - .../engine/scene => ecs/include/ecs}/components/uuid.hpp | 3 +-- .../include/engine/scene => ecs/include/ecs}/entity.hpp | 5 ++--- .../include/engine/scene => ecs/include/ecs}/scene.hpp | 5 ++--- .../include/engine/core => ecs/include/ecs}/uuid.hpp | 0 modules/{engine/src/scene => ecs/src}/entity.cpp | 4 ++-- modules/{engine/src/scene => ecs/src}/scene.cpp | 6 +++--- modules/{engine/src/core => ecs/src}/uuid.cpp | 2 +- modules/engine/CMakeLists.txt | 7 +------ modules/engine/include/engine/engine.hpp | 5 ----- modules/engine/include/engine/scene/components.hpp | 6 ------ modules/engine/include/engine/utils/serializer.hpp | 4 ++-- modules/engine/src/utils/serializer.cpp | 2 +- modules/mirror/include/mirror/editor_layer.hpp | 2 ++ modules/mirror/include/mirror/panel/asset_browser.hpp | 2 ++ modules/mirror/include/mirror/panel/properties.hpp | 2 +- modules/mirror/include/mirror/panel/scene_hierarchy.hpp | 4 ++-- modules/mirror/src/editor_layer.cpp | 2 ++ modules/mirror/src/panel/asset_browser.cpp | 1 + modules/mirror/src/panel/properties.cpp | 2 +- modules/mirror/src/panel/scene_hierarchy.cpp | 2 +- 28 files changed, 38 insertions(+), 46 deletions(-) create mode 100644 modules/ecs/CMakeLists.txt create mode 100644 modules/ecs/include/ecs/components.hpp rename modules/{engine/include/engine/scene => ecs/include/ecs}/components/native_script.hpp (88%) rename modules/{engine/include/engine/scene => ecs/include/ecs}/components/scriptable_entity.hpp (93%) rename modules/{engine/include/engine/scene => ecs/include/ecs}/components/sprite_renderer.hpp (99%) rename modules/{engine/include/engine/scene => ecs/include/ecs}/components/tag.hpp (99%) rename modules/{engine/include/engine/scene => ecs/include/ecs}/components/transform.hpp (99%) rename modules/{engine/include/engine/scene => ecs/include/ecs}/components/uuid.hpp (84%) rename modules/{engine/include/engine/scene => ecs/include/ecs}/entity.hpp (92%) rename modules/{engine/include/engine/scene => ecs/include/ecs}/scene.hpp (90%) rename modules/{engine/include/engine/core => ecs/include/ecs}/uuid.hpp (100%) rename modules/{engine/src/scene => ecs/src}/entity.cpp (64%) rename modules/{engine/src/scene => ecs/src}/scene.cpp (96%) rename modules/{engine/src/core => ecs/src}/uuid.cpp (89%) delete mode 100644 modules/engine/include/engine/scene/components.hpp diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index bd6661c..db218ad 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -11,6 +11,7 @@ add_subdirectory(./input) add_subdirectory(./ui) add_subdirectory(./renderer) +add_subdirectory(./ecs) add_subdirectory(./engine) add_subdirectory(./mirror) diff --git a/modules/ecs/CMakeLists.txt b/modules/ecs/CMakeLists.txt new file mode 100644 index 0000000..1c7641f --- /dev/null +++ b/modules/ecs/CMakeLists.txt @@ -0,0 +1,2 @@ +add_library_module(ecs entity.cpp scene.cpp uuid.cpp) +target_link_libraries(ecs PUBLIC logger lt_debug EnTT::EnTT renderer input camera) diff --git a/modules/ecs/include/ecs/components.hpp b/modules/ecs/include/ecs/components.hpp new file mode 100644 index 0000000..bd457f5 --- /dev/null +++ b/modules/ecs/include/ecs/components.hpp @@ -0,0 +1,6 @@ +#pragma once + +#include +#include +#include +#include diff --git a/modules/engine/include/engine/scene/components/native_script.hpp b/modules/ecs/include/ecs/components/native_script.hpp similarity index 88% rename from modules/engine/include/engine/scene/components/native_script.hpp rename to modules/ecs/include/ecs/components/native_script.hpp index 2d80094..a0d8f5a 100644 --- a/modules/engine/include/engine/scene/components/native_script.hpp +++ b/modules/ecs/include/ecs/components/native_script.hpp @@ -1,7 +1,6 @@ #pragma once - -#include +#include namespace lt { diff --git a/modules/engine/include/engine/scene/components/scriptable_entity.hpp b/modules/ecs/include/ecs/components/scriptable_entity.hpp similarity index 93% rename from modules/engine/include/engine/scene/components/scriptable_entity.hpp rename to modules/ecs/include/ecs/components/scriptable_entity.hpp index 4af1c7c..9131add 100644 --- a/modules/engine/include/engine/scene/components/scriptable_entity.hpp +++ b/modules/ecs/include/ecs/components/scriptable_entity.hpp @@ -1,7 +1,6 @@ #pragma once - -#include +#include namespace lt { diff --git a/modules/engine/include/engine/scene/components/sprite_renderer.hpp b/modules/ecs/include/ecs/components/sprite_renderer.hpp similarity index 99% rename from modules/engine/include/engine/scene/components/sprite_renderer.hpp rename to modules/ecs/include/ecs/components/sprite_renderer.hpp index 8668d08..ece1fb5 100644 --- a/modules/engine/include/engine/scene/components/sprite_renderer.hpp +++ b/modules/ecs/include/ecs/components/sprite_renderer.hpp @@ -1,6 +1,5 @@ #pragma once - #include #include diff --git a/modules/engine/include/engine/scene/components/tag.hpp b/modules/ecs/include/ecs/components/tag.hpp similarity index 99% rename from modules/engine/include/engine/scene/components/tag.hpp rename to modules/ecs/include/ecs/components/tag.hpp index f62d3e2..4e19b74 100644 --- a/modules/engine/include/engine/scene/components/tag.hpp +++ b/modules/ecs/include/ecs/components/tag.hpp @@ -1,6 +1,5 @@ #pragma once - #include namespace lt { diff --git a/modules/engine/include/engine/scene/components/transform.hpp b/modules/ecs/include/ecs/components/transform.hpp similarity index 99% rename from modules/engine/include/engine/scene/components/transform.hpp rename to modules/ecs/include/ecs/components/transform.hpp index 0136e73..a03fd54 100644 --- a/modules/engine/include/engine/scene/components/transform.hpp +++ b/modules/ecs/include/ecs/components/transform.hpp @@ -2,7 +2,6 @@ #define GLM_ENABLE_EXPERIMENTAL - #include #include #include diff --git a/modules/engine/include/engine/scene/components/uuid.hpp b/modules/ecs/include/ecs/components/uuid.hpp similarity index 84% rename from modules/engine/include/engine/scene/components/uuid.hpp rename to modules/ecs/include/ecs/components/uuid.hpp index 6bcb921..a3f5a79 100644 --- a/modules/engine/include/engine/scene/components/uuid.hpp +++ b/modules/ecs/include/ecs/components/uuid.hpp @@ -1,7 +1,6 @@ #pragma once - -#include +#include namespace lt { diff --git a/modules/engine/include/engine/scene/entity.hpp b/modules/ecs/include/ecs/entity.hpp similarity index 92% rename from modules/engine/include/engine/scene/entity.hpp rename to modules/ecs/include/ecs/entity.hpp index dbd0575..bbcd7bf 100644 --- a/modules/engine/include/engine/scene/entity.hpp +++ b/modules/ecs/include/ecs/entity.hpp @@ -1,8 +1,7 @@ #pragma once - -#include -#include +#include +#include #include namespace lt { diff --git a/modules/engine/include/engine/scene/scene.hpp b/modules/ecs/include/ecs/scene.hpp similarity index 90% rename from modules/engine/include/engine/scene/scene.hpp rename to modules/ecs/include/ecs/scene.hpp index 565da78..17979dc 100644 --- a/modules/engine/include/engine/scene/scene.hpp +++ b/modules/ecs/include/ecs/scene.hpp @@ -1,8 +1,7 @@ #pragma once - -#include -#include +#include +#include #include #include diff --git a/modules/engine/include/engine/core/uuid.hpp b/modules/ecs/include/ecs/uuid.hpp similarity index 100% rename from modules/engine/include/engine/core/uuid.hpp rename to modules/ecs/include/ecs/uuid.hpp diff --git a/modules/engine/src/scene/entity.cpp b/modules/ecs/src/entity.cpp similarity index 64% rename from modules/engine/src/scene/entity.cpp rename to modules/ecs/src/entity.cpp index bb1c676..08e72b0 100644 --- a/modules/engine/src/scene/entity.cpp +++ b/modules/ecs/src/entity.cpp @@ -1,5 +1,5 @@ -#include -#include +#include +#include namespace lt { diff --git a/modules/engine/src/scene/scene.cpp b/modules/ecs/src/scene.cpp similarity index 96% rename from modules/engine/src/scene/scene.cpp rename to modules/ecs/src/scene.cpp index d4ebb58..3939ab4 100644 --- a/modules/engine/src/scene/scene.cpp +++ b/modules/ecs/src/scene.cpp @@ -1,7 +1,7 @@ #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/modules/engine/src/core/uuid.cpp b/modules/ecs/src/uuid.cpp similarity index 89% rename from modules/engine/src/core/uuid.cpp rename to modules/ecs/src/uuid.cpp index fd7046c..c84dd39 100644 --- a/modules/engine/src/core/uuid.cpp +++ b/modules/ecs/src/uuid.cpp @@ -1,4 +1,4 @@ -#include +#include namespace lt { diff --git a/modules/engine/CMakeLists.txt b/modules/engine/CMakeLists.txt index a970c83..35ac9f5 100644 --- a/modules/engine/CMakeLists.txt +++ b/modules/engine/CMakeLists.txt @@ -1,28 +1,22 @@ if(NOT WIN32) add_library_module(engine core/application.cpp - core/uuid.cpp debug/exceptions.cpp debug/instrumentor.cpp layer/layer.cpp layer/layer_stack.cpp os/linux/l_window.cpp - scene/entity.cpp - scene/scene.cpp time/timer.cpp utils/serializer.cpp ) else() add_library_module(engine core/application.cpp - core/uuid.cpp debug/exceptions.cpp debug/instrumentor.cpp layer/layer.cpp layer/layer_stack.cpp os/windows/w_window.cpp - scene/entity.cpp - scene/scene.cpp time/timer.cpp utils/serializer.cpp ) @@ -41,4 +35,5 @@ target_link_libraries( PUBLIC yaml-cpp::yaml-cpp PUBLIC EnTT::EnTT PUBLIC lt_debug + PUBLIC ecs ) diff --git a/modules/engine/include/engine/engine.hpp b/modules/engine/include/engine/engine.hpp index abe8311..de45fdc 100644 --- a/modules/engine/include/engine/engine.hpp +++ b/modules/engine/include/engine/engine.hpp @@ -26,11 +26,6 @@ // third party #include -// scene -#include -#include -#include - // entry point #ifdef LIGHT_ENTRY_POINT #include diff --git a/modules/engine/include/engine/scene/components.hpp b/modules/engine/include/engine/scene/components.hpp deleted file mode 100644 index 25aa62b..0000000 --- a/modules/engine/include/engine/scene/components.hpp +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include -#include -#include -#include diff --git a/modules/engine/include/engine/utils/serializer.hpp b/modules/engine/include/engine/utils/serializer.hpp index 18e100a..c672632 100644 --- a/modules/engine/include/engine/utils/serializer.hpp +++ b/modules/engine/include/engine/utils/serializer.hpp @@ -1,8 +1,8 @@ #pragma once -#include -#include +#include +#include #include namespace lt { diff --git a/modules/engine/src/utils/serializer.cpp b/modules/engine/src/utils/serializer.cpp index c99d5b2..942bf8b 100644 --- a/modules/engine/src/utils/serializer.cpp +++ b/modules/engine/src/utils/serializer.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include diff --git a/modules/mirror/include/mirror/editor_layer.hpp b/modules/mirror/include/mirror/editor_layer.hpp index 8e5aa2e..1bba82f 100644 --- a/modules/mirror/include/mirror/editor_layer.hpp +++ b/modules/mirror/include/mirror/editor_layer.hpp @@ -8,6 +8,8 @@ namespace lt { +class Scene; + class EditorLayer: public Layer { public: diff --git a/modules/mirror/include/mirror/panel/asset_browser.hpp b/modules/mirror/include/mirror/panel/asset_browser.hpp index 6222ebd..547428f 100644 --- a/modules/mirror/include/mirror/panel/asset_browser.hpp +++ b/modules/mirror/include/mirror/panel/asset_browser.hpp @@ -6,6 +6,8 @@ namespace lt { +class Scene; + class AssetBrowserPanel: public Panel { public: diff --git a/modules/mirror/include/mirror/panel/properties.hpp b/modules/mirror/include/mirror/panel/properties.hpp index 9ee8d4a..cde0039 100644 --- a/modules/mirror/include/mirror/panel/properties.hpp +++ b/modules/mirror/include/mirror/panel/properties.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include namespace lt { diff --git a/modules/mirror/include/mirror/panel/scene_hierarchy.hpp b/modules/mirror/include/mirror/panel/scene_hierarchy.hpp index e403b7c..a7cb8e4 100644 --- a/modules/mirror/include/mirror/panel/scene_hierarchy.hpp +++ b/modules/mirror/include/mirror/panel/scene_hierarchy.hpp @@ -1,8 +1,8 @@ #pragma once -#include -#include +#include +#include #include namespace lt { diff --git a/modules/mirror/src/editor_layer.cpp b/modules/mirror/src/editor_layer.cpp index 03264e6..0e58b07 100644 --- a/modules/mirror/src/editor_layer.cpp +++ b/modules/mirror/src/editor_layer.cpp @@ -1,5 +1,7 @@ #include #include +#include +#include #include #include #include diff --git a/modules/mirror/src/panel/asset_browser.cpp b/modules/mirror/src/panel/asset_browser.cpp index 7842ddc..c6192ec 100644 --- a/modules/mirror/src/panel/asset_browser.cpp +++ b/modules/mirror/src/panel/asset_browser.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include diff --git a/modules/mirror/src/panel/properties.cpp b/modules/mirror/src/panel/properties.cpp index 3a21eb5..6efa901 100644 --- a/modules/mirror/src/panel/properties.cpp +++ b/modules/mirror/src/panel/properties.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include #include diff --git a/modules/mirror/src/panel/scene_hierarchy.cpp b/modules/mirror/src/panel/scene_hierarchy.cpp index eadb1ea..c83961b 100644 --- a/modules/mirror/src/panel/scene_hierarchy.cpp +++ b/modules/mirror/src/panel/scene_hierarchy.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include #include