weather is saving now

This commit is contained in:
MihailRis 2024-05-30 16:02:01 +03:00
parent 2d27e5662a
commit c9fb33132f
5 changed files with 17 additions and 13 deletions

View File

@ -139,8 +139,8 @@ std::shared_ptr<UINode> create_debug_panel(
}
{
auto bar = std::make_shared<TrackBar>(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);
}
{

View File

@ -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<float>(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;

View File

@ -76,8 +76,6 @@ public:
Camera* camera,
const EngineSettings& settings
);
static float fog;
};

View File

@ -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<dynamic::Map> 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;
}

View File

@ -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,