From 740c80e8c7b9a3c8ceb1eaca9dd0c0008bbb714a Mon Sep 17 00:00:00 2001 From: Jiga228 Date: Sat, 25 Oct 2025 23:20:28 +0700 Subject: [PATCH] Move classes Mesh and StaticMesh to UwURenderEngine project. Because they depended from UwURenderEngine --- Core/Game/BaseObjectFactory.cpp | 2 - Core/Game/ModelManager.cpp | 45 +------------------ Core/Game/ModelManager.hpp | 27 +---------- Core/Game/World/World.hpp | 1 - TestGame/CMakeLists.txt | 1 + TestGame/src/Factories/ObjectFactory.cpp | 2 + TestGame/src/Worlds/TestWorld.cpp | 1 + .../Game/Actors/Mesh/Mesh.cpp | 0 .../Game/Actors/Mesh/Mesh.hpp | 2 +- .../Game/Actors/Mesh/StaticMesh.cpp | 0 .../Game/Actors/Mesh/StaticMesh.hpp | 0 .../{ => RenderEngine}/UwURenderEngine.cpp | 4 +- .../{ => RenderEngine}/UwURenderEngine.hpp | 0 13 files changed, 9 insertions(+), 76 deletions(-) rename {Core => UwURenderEngine}/Game/Actors/Mesh/Mesh.cpp (100%) rename {Core => UwURenderEngine}/Game/Actors/Mesh/Mesh.hpp (94%) rename {Core => UwURenderEngine}/Game/Actors/Mesh/StaticMesh.cpp (100%) rename {Core => UwURenderEngine}/Game/Actors/Mesh/StaticMesh.hpp (100%) rename UwURenderEngine/{ => RenderEngine}/UwURenderEngine.cpp (99%) rename UwURenderEngine/{ => RenderEngine}/UwURenderEngine.hpp (100%) diff --git a/Core/Game/BaseObjectFactory.cpp b/Core/Game/BaseObjectFactory.cpp index 1b5418c..50ea06e 100644 --- a/Core/Game/BaseObjectFactory.cpp +++ b/Core/Game/BaseObjectFactory.cpp @@ -1,12 +1,10 @@ #include "ObjectFactory.hpp" -#include "Actors/Mesh/StaticMesh.hpp" #include "Game/Actors/Actor.hpp" #include "Math/Vector.hpp" std::vector base_object_factories = { GENERATE_FACTORY_OBJECT(Actor) - GENERATE_FACTORY_OBJECT(StaticMesh) GENERATE_FACTORY_OBJECT(Vector2D) GENERATE_FACTORY_OBJECT(Vector3D) }; \ No newline at end of file diff --git a/Core/Game/ModelManager.cpp b/Core/Game/ModelManager.cpp index 5d51dcd..e48eb0f 100644 --- a/Core/Game/ModelManager.cpp +++ b/Core/Game/ModelManager.cpp @@ -2,36 +2,6 @@ #include "Log/Log.hpp" -ModelManager::StaticModel::StaticModel(const std::vector& voxels, std::string name): -name_(std::move(name)), -voxels_(voxels) -{ - glm::ivec3 sum_moments{0, 0, 0}; - int sum_masses = 0; - - for (auto& i : voxels_) - { - sum_moments += glm::ivec3{i.loc.x * i.mass, i.loc.y * i.mass, i.loc.z * i.mass}; - sum_masses += i.mass; - } - - if(sum_masses != 0) - sum_moments /= sum_masses; - else if (!voxels_.empty()) - { - sum_moments.x /= static_cast(voxels_.size()); - sum_moments.y /= static_cast(voxels_.size()); - sum_moments.z /= static_cast(voxels_.size()); - } - - mass_center_ = sum_moments; -} - -ModelManager::StaticModel::~StaticModel() -{ - OnDestroy.Call(name_); -} - ModelManager::owner_counter::owner_counter(const owner_counter& other) : counter(other.counter.load()), model(other.model) { } @@ -49,18 +19,8 @@ unsigned int ModelManager::FNV1aHash(const char* buf) return h_val; } -void ModelManager::OnDestroySometimeModelCaller(const std::string& name) -{ - Loging::Log("Free model: " + name); - OnDestroySometimeModel.Call(name); -} - ModelManager::~ModelManager() { - for (const auto& [it, counter] : models) - { - counter.model->OnDestroy.unbind(this, &ModelManager::OnDestroySometimeModelCaller); - } models.clear(); } @@ -78,14 +38,11 @@ ModelManager::StaticModel* ModelManager::LoadModel(const std::string& name) Loging::Log("Load new model: " + name); - std::vector model_data; // Load model_data owner_counter new_counter; new_counter.counter.store(1); - new_counter.model = new StaticModel(model_data, name); - new_counter.model->OnDestroy.bind(this, &ModelManager::OnDestroySometimeModelCaller); + new_counter.model = new StaticModel(); models.try_emplace(hash, new_counter); - OnLoadSometimeModel.Call(new_counter.model); return new_counter.model; } diff --git a/Core/Game/ModelManager.hpp b/Core/Game/ModelManager.hpp index de9c314..fba7e57 100644 --- a/Core/Game/ModelManager.hpp +++ b/Core/Game/ModelManager.hpp @@ -1,33 +1,15 @@ #pragma once #include -#include #include -#include -#include +#include class ModelManager { public: - struct Voxel - { - glm::vec3 loc, color; - int mass; - }; class StaticModel { - std::string name_; - std::vector voxels_; - glm::vec3 mass_center_; - public: - Delegate OnDestroy; - - StaticModel(const std::vector& voxels, std::string name); - ~StaticModel(); - - const std::vector& GetVoxels() const { return voxels_; } - glm::vec3 GetMassCenter() const { return mass_center_; } - const std::string& GetName() const { return name_; } + //DATA }; struct owner_counter @@ -45,12 +27,7 @@ private: static unsigned int FNV1aHash (const char *buf); - void OnDestroySometimeModelCaller(const std::string& name); - public: - Delegate OnDestroySometimeModel; - Delegate OnLoadSometimeModel; - ~ModelManager(); StaticModel* LoadModel(const std::string& name); diff --git a/Core/Game/World/World.hpp b/Core/Game/World/World.hpp index dfeef07..f409299 100644 --- a/Core/Game/World/World.hpp +++ b/Core/Game/World/World.hpp @@ -7,7 +7,6 @@ #include "RTTI.h" #include "Game/Actors/Actor.hpp" -#include "Game/Actors/Mesh/Mesh.hpp" #include "Types/object_ptr.hpp" class GameInstance; diff --git a/TestGame/CMakeLists.txt b/TestGame/CMakeLists.txt index 2ae8c30..c373fe7 100644 --- a/TestGame/CMakeLists.txt +++ b/TestGame/CMakeLists.txt @@ -8,6 +8,7 @@ add_executable(${GAME_NAME} ${SRC}) target_link_libraries(${GAME_NAME} PRIVATE Core UwURenderEngine) target_include_directories(${GAME_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/Core + ${PROJECT_SOURCE_DIR}/UwURenderEngine ) if(MSVC) diff --git a/TestGame/src/Factories/ObjectFactory.cpp b/TestGame/src/Factories/ObjectFactory.cpp index 0c8baf5..d0ed568 100644 --- a/TestGame/src/Factories/ObjectFactory.cpp +++ b/TestGame/src/Factories/ObjectFactory.cpp @@ -1,7 +1,9 @@ #include "Game/ObjectFactory.hpp" #include "../Actors/TestActor.h" +#include "Game/Actors/Mesh/StaticMesh.hpp" FACTORIES_LIST{ + GENERATE_FACTORY_OBJECT(StaticMesh) GENERATE_FACTORY_OBJECT(TestActor) }; diff --git a/TestGame/src/Worlds/TestWorld.cpp b/TestGame/src/Worlds/TestWorld.cpp index fe65334..4ec1cb8 100644 --- a/TestGame/src/Worlds/TestWorld.cpp +++ b/TestGame/src/Worlds/TestWorld.cpp @@ -3,6 +3,7 @@ #include "Game/GameInstance.hpp" #include "Game/SaveMap/SaveMap.hpp" #include "Log/Log.hpp" +#include "Game/Actors/Mesh/Mesh.hpp" TestWorld::TestWorld(GameInstance& game_instance) : World(game_instance) {} diff --git a/Core/Game/Actors/Mesh/Mesh.cpp b/UwURenderEngine/Game/Actors/Mesh/Mesh.cpp similarity index 100% rename from Core/Game/Actors/Mesh/Mesh.cpp rename to UwURenderEngine/Game/Actors/Mesh/Mesh.cpp diff --git a/Core/Game/Actors/Mesh/Mesh.hpp b/UwURenderEngine/Game/Actors/Mesh/Mesh.hpp similarity index 94% rename from Core/Game/Actors/Mesh/Mesh.hpp rename to UwURenderEngine/Game/Actors/Mesh/Mesh.hpp index 7c0e65a..e2b636a 100644 --- a/Core/Game/Actors/Mesh/Mesh.hpp +++ b/UwURenderEngine/Game/Actors/Mesh/Mesh.hpp @@ -2,7 +2,7 @@ #include -#include "../Actor.hpp" +#include "Game/Actors/Actor.hpp" GENERATE_META(Mesh) class Mesh : public Actor diff --git a/Core/Game/Actors/Mesh/StaticMesh.cpp b/UwURenderEngine/Game/Actors/Mesh/StaticMesh.cpp similarity index 100% rename from Core/Game/Actors/Mesh/StaticMesh.cpp rename to UwURenderEngine/Game/Actors/Mesh/StaticMesh.cpp diff --git a/Core/Game/Actors/Mesh/StaticMesh.hpp b/UwURenderEngine/Game/Actors/Mesh/StaticMesh.hpp similarity index 100% rename from Core/Game/Actors/Mesh/StaticMesh.hpp rename to UwURenderEngine/Game/Actors/Mesh/StaticMesh.hpp diff --git a/UwURenderEngine/UwURenderEngine.cpp b/UwURenderEngine/RenderEngine/UwURenderEngine.cpp similarity index 99% rename from UwURenderEngine/UwURenderEngine.cpp rename to UwURenderEngine/RenderEngine/UwURenderEngine.cpp index 4694631..931648e 100644 --- a/UwURenderEngine/UwURenderEngine.cpp +++ b/UwURenderEngine/RenderEngine/UwURenderEngine.cpp @@ -12,9 +12,7 @@ #include "Game/GameInstance.hpp" #include "Game/World/World.hpp" -#include "Game/Actors/Mesh/Mesh.hpp" - -#include "GLFW/glfw3.h" +#include "../Game/Actors/Mesh/Mesh.hpp" const std::vector UwURenderEngine::deviceExtensions = { VK_KHR_SWAPCHAIN_EXTENSION_NAME diff --git a/UwURenderEngine/UwURenderEngine.hpp b/UwURenderEngine/RenderEngine/UwURenderEngine.hpp similarity index 100% rename from UwURenderEngine/UwURenderEngine.hpp rename to UwURenderEngine/RenderEngine/UwURenderEngine.hpp