From 08c6930c48d7a9399100128d4c4e0477b4995b05 Mon Sep 17 00:00:00 2001 From: Yousef Khadadeh Date: Tue, 30 Sep 2025 16:48:12 +0300 Subject: [PATCH] Fixed crash when zooming in very fast on network --- src/Server/CommandList.hpp | 2 +- src/World.cpp | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Server/CommandList.hpp b/src/Server/CommandList.hpp index c348223..74b1338 100644 --- a/src/Server/CommandList.hpp +++ b/src/Server/CommandList.hpp @@ -57,4 +57,4 @@ enum ClientCommands : MessageCommandType { #define VERSION_STRING "0.2.0" // Arbitrary value. Higher scale up values lead to less scale up events (which can cause stuttering), but leads to larger numbers overall, which can cause a tiny bit of lag and increased memory usage -#define CANVAS_SCALE_UP_STEP WorldScalar("100000000000000000000000000000000000000000000000000") +#define CANVAS_SCALE_UP_STEP WorldScalar("2") diff --git a/src/World.cpp b/src/World.cpp index 047e95e..6916ce1 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -122,9 +122,11 @@ void World::init_client_callbacks() { con.client_add_recv_callback(CLIENT_CANVAS_SCALE, [&](cereal::PortableBinaryInputArchive& message) { uint64_t newCanvasScale; message(newCanvasScale); - con.client_send_items_to_server(RELIABLE_COMMAND_CHANNEL, SERVER_CANVAS_SCALE, newCanvasScale); - scale_up(FixedPoint::pow_int(CANVAS_SCALE_UP_STEP, newCanvasScale - canvasScale)); - canvasScale = newCanvasScale; + if(newCanvasScale > canvasScale) { + con.client_send_items_to_server(RELIABLE_COMMAND_CHANNEL, SERVER_CANVAS_SCALE, newCanvasScale); + scale_up(FixedPoint::pow_int(CANVAS_SCALE_UP_STEP, newCanvasScale - canvasScale)); + canvasScale = newCanvasScale; + } }); con.client_add_recv_callback(CLIENT_KEEP_ALIVE, [&](cereal::PortableBinaryInputArchive& message) { });