diff --git a/assets/shaders/provinces.vert b/assets/shaders/provinces.vert index 1ef7082..0530a90 100644 --- a/assets/shaders/provinces.vert +++ b/assets/shaders/provinces.vert @@ -1,5 +1,5 @@ struct Province { - uint stateId; + uint regionId; uint color; }; layout(std430, binding=0) buffer Data { diff --git a/engine-api/modules/AssetData.cppm b/engine-api/modules/AssetData.cppm index 8679207..57d7a53 100644 --- a/engine-api/modules/AssetData.cppm +++ b/engine-api/modules/AssetData.cppm @@ -7,7 +7,7 @@ module; export module AssetData; import GameData; -import MapView; +import views; export namespace ee_assets { diff --git a/engine-api/modules/Render.cppm b/engine-api/modules/Render.cppm index 2b6ecae..b1b1bfb 100644 --- a/engine-api/modules/Render.cppm +++ b/engine-api/modules/Render.cppm @@ -8,8 +8,8 @@ module; #include export module Render; -import worker; -import MapView; +import utils; +import views; import AssetData; export namespace ee_engine diff --git a/engine-api/modules/views/MapView.cppm b/engine-api/modules/views/MapView.cppm index cd71529..778104d 100644 --- a/engine-api/modules/views/MapView.cppm +++ b/engine-api/modules/views/MapView.cppm @@ -5,8 +5,7 @@ module; #include #include -//TODO: module Views -export module MapView; +export module views:MapView; export namespace ee_engine { diff --git a/engine-api/modules/views/views.cppm b/engine-api/modules/views/views.cppm new file mode 100644 index 0000000..910c2f9 --- /dev/null +++ b/engine-api/modules/views/views.cppm @@ -0,0 +1,2 @@ +export module views; +export import :MapView; \ No newline at end of file diff --git a/engine-api/src/AssetData.cpp b/engine-api/src/AssetData.cpp index 1f8fbcb..c1aff1b 100644 --- a/engine-api/src/AssetData.cpp +++ b/engine-api/src/AssetData.cpp @@ -5,8 +5,7 @@ module; #include module AssetData; -import allocator; -import buffers; +import utils; /* @@ -40,10 +39,10 @@ ee_assets::AssetMapMesh::AssetMapMesh(std::uint8_t* &source, const std::size_t s std::size_t leftoverSize = sourceSize; source = nullptr; - std::uint32_t statesCount = 0; - ee_utils::readNext(&statesCount, pointer, leftoverSize, sizeof(std::uint32_t)); + std::uint32_t regionsCount = 0; + ee_utils::readNext(®ionsCount, pointer, leftoverSize, sizeof(std::uint32_t)); - for (std::uint32_t state = 0; state < statesCount; state++) + for (std::uint32_t region = 0; region < regionsCount; region++) { std::uint32_t id = 0; glm::u8vec3 color {}; diff --git a/engine/modules/AssetManager.cppm b/engine/modules/AssetManager.cppm index 60abb68..caa9965 100644 --- a/engine/modules/AssetManager.cppm +++ b/engine/modules/AssetManager.cppm @@ -17,8 +17,7 @@ module; export module AssetManager; export import AssetData; -import allocator; -import worker; +import utils; import FileSystem; export @@ -153,7 +152,7 @@ export return *reinterpret_cast(command.out->load()); } - AssetHandle& Find(const std::uint32_t &id) + AssetHandle& Find(const std::uint32_t id) { std::atomic result; AssetStreamCommand command; @@ -173,7 +172,7 @@ export } // Returned resource reference should not be stored - template T& FindOnce(const std::uint32_t &id) + template T& FindOnce(const std::uint32_t id) { return Get(Find(id)); } @@ -294,9 +293,6 @@ export mapMeshesStorage.clear(); shadersStorage.clear(); materialsStorage.clear(); - - LOG(INFO, "Asset Streaming is released"); - isRunning.store(false); } private: diff --git a/engine/modules/Client.cppm b/engine/modules/Client.cppm index b623526..5ad6b60 100644 --- a/engine/modules/Client.cppm +++ b/engine/modules/Client.cppm @@ -3,7 +3,7 @@ module; #include export module Client; -import worker; +import utils; import GameData; import DataChannel; import AssetManager; diff --git a/engine/modules/Engine.cppm b/engine/modules/Engine.cppm index 8fcb8d8..b069078 100644 --- a/engine/modules/Engine.cppm +++ b/engine/modules/Engine.cppm @@ -8,8 +8,7 @@ export module Engine; export import AssetManager; export import Client; -import allocator; -import worker; +import utils; export { diff --git a/engine/modules/FileSystem.cppm b/engine/modules/FileSystem.cppm index 484794e..af0da19 100644 --- a/engine/modules/FileSystem.cppm +++ b/engine/modules/FileSystem.cppm @@ -56,7 +56,7 @@ export std::vector freeFileSlots; }; - class NativeFileSystem : public IFileSystem { + class NativeFileSystem final : public IFileSystem { public: FileHandle &Open(const std::filesystem::path &path, const std::uint32_t flags) override; diff --git a/engine/modules/GLFWInput.cppm b/engine/modules/GLFWInput.cppm index 55bea10..7ff58cc 100644 --- a/engine/modules/GLFWInput.cppm +++ b/engine/modules/GLFWInput.cppm @@ -6,7 +6,7 @@ export module GLFWInput; import Input; export { - class GLFWInput : public ee_engine::IInput + class GLFWInput final : public ee_engine::IInput { public: GLFWInput(ee_engine::InputHandlers handlers); diff --git a/engine/src/Client.cpp b/engine/src/Client.cpp index 765b1db..72a9e90 100644 --- a/engine/src/Client.cpp +++ b/engine/src/Client.cpp @@ -6,8 +6,8 @@ module; #include module Client; -import allocator; -import MapView; +import utils; +import views; import Engine; Client::Client() : ee_utils::ThreadedWorker(L"Client") diff --git a/engine/src/FileSystem.cpp b/engine/src/FileSystem.cpp index ef66758..fdc9573 100644 --- a/engine/src/FileSystem.cpp +++ b/engine/src/FileSystem.cpp @@ -6,7 +6,7 @@ module; #include module FileSystem; -import allocator; +import utils; IFileSystem::~IFileSystem() diff --git a/engine/src/main.cpp b/engine/src/main.cpp index b31811c..3efadd6 100644 --- a/engine/src/main.cpp +++ b/engine/src/main.cpp @@ -1,4 +1,4 @@ -import allocator; +import utils; import Engine; import Actions; @@ -11,7 +11,6 @@ import GLFWInput; #include IP7_Trace* Logger::trace; - int main(int argc, char **argv) { // Setup P7 logger @@ -53,8 +52,8 @@ int main(int argc, char **argv) // Setup renderer TODO: builder Engine::renderer = reinterpret_cast(Allocate(window)); - ee_assets::AssetMapMesh &states = Engine::assetManager->FindOnce("assets/map/ET.map"); - Engine::renderer->RegisterMapMesh(&states.content); + ee_assets::AssetMapMesh ®ions = Engine::assetManager->FindOnce("assets/map/ET.map"); + Engine::renderer->RegisterMapMesh(®ions.content); //TODO: ShaderRefs builder from set of AssetMaterial ee_assets::AssetMaterial &provincesMaterial = @@ -98,7 +97,6 @@ int main(int argc, char **argv) // Free memory LOG(INFO, "Exit..."); Engine::Shutdown(); - //TODO: check Unregister in other threads and make threaded module base class Logger::trace->Unregister_Thread(0); Logger::trace->Release(); p7client->Release(); @@ -106,9 +104,5 @@ int main(int argc, char **argv) return 0; } -// TODO: Rename states to regions in old sources -// TODO: Remove unneccesary address providing like (const type &arg) for small primitives // TODO: Use CRTP where possible in classes with virtual/override -// TODO: Use final in classes with override -// TODO: Implementations of API as partition modules // TODO: Leaks detection \ No newline at end of file diff --git a/renderers/magnum-renderer/modules/Materials.cppm b/renderers/magnum-renderer/modules/Materials.cppm index a23fd3d..b59c326 100644 --- a/renderers/magnum-renderer/modules/Materials.cppm +++ b/renderers/magnum-renderer/modules/Materials.cppm @@ -9,7 +9,7 @@ module; #include #include -export module Materials; +export module MagnumRender:Materials; using namespace Magnum; @@ -29,7 +29,7 @@ export namespace ee_magnum explicit BaseMaterial(const std::string &vertSrc, const std::string &fragSrc); }; - class ProvinceMaterial : public BaseMaterial + class ProvinceMaterial final : public BaseMaterial { public: inline static constexpr std::int32_t PROVINCES_DATA_BINDING = 0; @@ -37,6 +37,6 @@ export namespace ee_magnum explicit ProvinceMaterial(const std::string &vertSrc, const std::string &fragSrc); - void setId(const std::uint32_t &id); + void setId(const std::uint32_t id); }; } diff --git a/renderers/magnum-renderer/modules/Render.cppm b/renderers/magnum-renderer/modules/Render.cppm index d2d7b65..9bde9f8 100644 --- a/renderers/magnum-renderer/modules/Render.cppm +++ b/renderers/magnum-renderer/modules/Render.cppm @@ -9,8 +9,8 @@ module; #include export module MagnumRender; -import MapView; -import Materials; + import :Materials; +import views; import Render; using namespace Magnum; diff --git a/renderers/magnum-renderer/src/Material.cpp b/renderers/magnum-renderer/src/Materials.cpp similarity index 91% rename from renderers/magnum-renderer/src/Material.cpp rename to renderers/magnum-renderer/src/Materials.cpp index 0cdc11a..1cbc0d6 100644 --- a/renderers/magnum-renderer/src/Material.cpp +++ b/renderers/magnum-renderer/src/Materials.cpp @@ -11,7 +11,8 @@ module; #include #include -module Materials; +module MagnumRender; + import :Materials; ee_magnum::BaseMaterial::BaseMaterial(const std::string &vertSrc, const std::string &fragSrc) { @@ -47,7 +48,7 @@ ee_magnum::ProvinceMaterial::ProvinceMaterial(const std::string &vertSrc, const } -void ee_magnum::ProvinceMaterial::setId(const uint32_t &id) +void ee_magnum::ProvinceMaterial::setId(const uint32_t id) { setUniform(PROVINCES_ID_BINDING, id); } diff --git a/renderers/magnum-renderer/src/Render.cpp b/renderers/magnum-renderer/src/Render.cpp index 85cbc0c..f714fb0 100644 --- a/renderers/magnum-renderer/src/Render.cpp +++ b/renderers/magnum-renderer/src/Render.cpp @@ -19,7 +19,7 @@ module; #include module MagnumRender; -import allocator; +import utils; using namespace Math::Literals; @@ -96,18 +96,17 @@ void ee_magnum::MagnumRenderer::LoadProvinces() { for (ee_engine::MapMesh::Province &province: provs) { - GL::Mesh stateMesh; + GL::Mesh regionMesh; - stateMesh.setPrimitive(GL::MeshPrimitive::Triangles) + regionMesh.setPrimitive(GL::MeshPrimitive::Triangles) .setCount(static_cast(province.indices.size())) .addVertexBuffer(GL::Buffer{province.vertices}, 0, GL::Attribute<0, Magnum::Vector2>{}) .setIndexBuffer(GL::Buffer{province.indices}, 0, GL::MeshIndexType::UnsignedShort); - provinceMeshes.push_back(std::move(stateMesh)); + provinceMeshes.push_back(std::move(regionMesh)); ee_engine::ProvinceSSBO data { .regionId = region, - //.color = region .color = 0xFFFFFF }; diff --git a/utils/modules/allocator.cppm b/utils/modules/allocator.cppm index a6ee53b..eb897b5 100644 --- a/utils/modules/allocator.cppm +++ b/utils/modules/allocator.cppm @@ -2,7 +2,7 @@ module; #include -export module allocator; +export module utils:allocator; export { template T* Allocate(Args&&... args) diff --git a/utils/modules/buffers.cppm b/utils/modules/buffers.cppm index 26ef2ed..6a5b9c9 100644 --- a/utils/modules/buffers.cppm +++ b/utils/modules/buffers.cppm @@ -3,10 +3,10 @@ module; #include #include -export module buffers; +export module utils:buffers; export namespace ee_utils { - bool readNext(void* dst, std::uint8_t* &srcPointer, std::size_t &srcLeftoverSize, const std::size_t &readSize); - bool writeNext(std::uint8_t* &dstPointer, void* src, std::size_t &dstLeftoverSize, const std::size_t &writeSize); + bool readNext(void* dst, std::uint8_t* &srcPointer, std::size_t &srcLeftoverSize, const std::size_t readSize); + bool writeNext(std::uint8_t* &dstPointer, void* src, std::size_t &dstLeftoverSize, const std::size_t writeSize); } \ No newline at end of file diff --git a/utils/modules/utils.cppm b/utils/modules/utils.cppm new file mode 100644 index 0000000..d845edf --- /dev/null +++ b/utils/modules/utils.cppm @@ -0,0 +1,6 @@ +export module utils; +export import :allocator; +export import :worker; +export import :buffers; + +export namespace ee_utils {} \ No newline at end of file diff --git a/utils/modules/worker.cppm b/utils/modules/worker.cppm index c3acb65..332b8f3 100644 --- a/utils/modules/worker.cppm +++ b/utils/modules/worker.cppm @@ -11,7 +11,7 @@ module; #include #include -export module worker; +export module utils:worker; export namespace ee_utils { @@ -144,7 +144,8 @@ export namespace ee_utils void ReleaseStop() { Release(); - LOG(INFO, "Client is released"); + LOG(INFO, "Thread is released"); + Logger::trace->Unregister_Thread(0); isRunning.store(false); } }; diff --git a/utils/src/buffers.cpp b/utils/src/buffers.cpp index b767af9..15fa634 100644 --- a/utils/src/buffers.cpp +++ b/utils/src/buffers.cpp @@ -4,9 +4,10 @@ module; #include #include -module buffers; +module utils; + import :buffers; -bool ee_utils::readNext(void* dst, std::uint8_t* &srcPointer, std::size_t &srcLeftoverSize, const std::size_t &readSize) +bool ee_utils::readNext(void* dst, std::uint8_t* &srcPointer, std::size_t &srcLeftoverSize, const std::size_t readSize) { if (srcLeftoverSize >= readSize) { @@ -20,7 +21,7 @@ bool ee_utils::readNext(void* dst, std::uint8_t* &srcPointer, std::size_t &srcLe return false; } -bool ee_utils::writeNext(std::uint8_t* &dstPointer, void* src, std::size_t &dstLeftoverSize, const std::size_t &writeSize) +bool ee_utils::writeNext(std::uint8_t* &dstPointer, void* src, std::size_t &dstLeftoverSize, const std::size_t writeSize) { if (dstLeftoverSize >= writeSize) {