From c9fb33132f9fe3e0dedf362fa351098bc9d5c5e4 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 30 May 2024 16:02:01 +0300 Subject: [PATCH] weather is saving now --- src/frontend/debug_panel.cpp | 4 ++-- src/graphics/render/WorldRenderer.cpp | 7 +++---- src/graphics/render/WorldRenderer.hpp | 2 -- src/world/World.cpp | 14 +++++++++----- src/world/World.hpp | 3 +++ 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/frontend/debug_panel.cpp b/src/frontend/debug_panel.cpp index 014af2f0..17213e4c 100644 --- a/src/frontend/debug_panel.cpp +++ b/src/frontend/debug_panel.cpp @@ -139,8 +139,8 @@ std::shared_ptr create_debug_panel( } { auto bar = std::make_shared(0.0f, 1.0f, 0.0f, 0.005f, 8); - bar->setSupplier([=]() {return WorldRenderer::fog;}); - bar->setConsumer([=](double val) {WorldRenderer::fog = val;}); + bar->setSupplier([=]() {return level->getWorld()->fog;}); + bar->setConsumer([=](double val) {level->getWorld()->fog = val;}); panel->add(bar); } { diff --git a/src/graphics/render/WorldRenderer.cpp b/src/graphics/render/WorldRenderer.cpp index 6e5888ce..4c523e8c 100644 --- a/src/graphics/render/WorldRenderer.cpp +++ b/src/graphics/render/WorldRenderer.cpp @@ -274,11 +274,12 @@ void WorldRenderer::draw( bool hudVisible, PostProcessing* postProcessing ){ + auto world = level->getWorld(); const Viewport& vp = pctx.getViewport(); camera->aspect = vp.getWidth() / static_cast(vp.getHeight()); const EngineSettings& settings = engine->getSettings(); - skybox->refresh(pctx, level->getWorld()->daytime, 1.0f+fog*2.0f, 4); + skybox->refresh(pctx, world->daytime, 1.0f+world->fog*2.0f, 4); Assets* assets = engine->getAssets(); Shader* linesShader = assets->getShader("lines"); @@ -291,7 +292,7 @@ void WorldRenderer::draw( Window::clearDepth(); // Drawing background sky plane - skybox->draw(pctx, camera, assets, level->getWorld()->daytime, fog); + skybox->draw(pctx, camera, assets, world->daytime, world->fog); // Actually world render with depth buffer on { @@ -355,5 +356,3 @@ void WorldRenderer::drawBorders(int sx, int sy, int sz, int ex, int ey, int ez) } lineBatch->render(); } - -float WorldRenderer::fog = 0.0f; diff --git a/src/graphics/render/WorldRenderer.hpp b/src/graphics/render/WorldRenderer.hpp index b99be9ae..bb5e6c42 100644 --- a/src/graphics/render/WorldRenderer.hpp +++ b/src/graphics/render/WorldRenderer.hpp @@ -76,8 +76,6 @@ public: Camera* camera, const EngineSettings& settings ); - - static float fog; }; diff --git a/src/world/World.cpp b/src/world/World.cpp index a7bcab92..9770e504 100644 --- a/src/world/World.cpp +++ b/src/world/World.cpp @@ -194,19 +194,20 @@ void World::deserialize(dynamic::Map* root) { if (generator == "") { generator = WorldGenerators::getDefaultGeneratorID(); } - auto verobj = root->map("version"); - if (verobj) { + if (auto verobj = root->map("version")) { int major=0, minor=-1; verobj->num("major", major); verobj->num("minor", minor); - std::cout << "world version: " << major << "." << minor << std::endl; + logger.info() << "world version: " << major << "." << minor; } - auto timeobj = root->map("time"); - if (timeobj) { + if (auto timeobj = root->map("time")) { timeobj->num("day-time", daytime); timeobj->num("day-time-speed", daytimeSpeed); timeobj->num("total-time", totalTime); } + if (auto weatherobj = root->map("weather")) { + weatherobj->num("fog", fog); + } nextInventoryId = root->get("next-inventory-id", 2); } @@ -226,6 +227,9 @@ std::unique_ptr World::serialize() const { timeobj.put("day-time-speed", daytimeSpeed); timeobj.put("total-time", totalTime); + auto& weatherobj = root->putMap("weather"); + weatherobj.put("fog", fog); + root->put("next-inventory-id", nextInventoryId); return root; } diff --git a/src/world/World.hpp b/src/world/World.hpp index 7d9e9748..e720473c 100644 --- a/src/world/World.hpp +++ b/src/world/World.hpp @@ -49,6 +49,9 @@ public: /// @brief total time passed in the world (not depending on daytimeSpeed) double totalTime = 0.0; + /// @brief will be replaced with weather in future + float fog = 0.0f; + World( std::string name, std::string generator,