Fixed scale up amount calculations

This commit is contained in:
Yousef Khadadeh 2025-12-31 16:43:08 +03:00
parent 85cc0c2457
commit 976c71215b
5 changed files with 6 additions and 6 deletions

View file

@ -34,7 +34,7 @@ void BookmarkListItem::scale_up(const WorldScalar& scaleUpAmount) {
i.obj->scale_up(scaleUpAmount);
}
else
bookmarkData->coords.inverseScale *= scaleUpAmount;
bookmarkData->coords.scale_about(WorldVec{0, 0}, scaleUpAmount, true);
}
bool BookmarkListItem::is_folder() const {

View file

@ -144,7 +144,7 @@ CanvasComponentContainer::TransformDrawData CanvasComponentContainer::calculate_
}
void CanvasComponentContainer::scale_up(const WorldScalar& scaleUpAmount) {
coords.inverseScale *= scaleUpAmount;
coords.scale_about(WorldVec{0, 0}, scaleUpAmount, true);
calculate_world_bounds();
}

View file

@ -59,7 +59,7 @@ void ClientData::register_class(World& world) {
uint32_t oldGridSize = o->gridSize;
a(o->gridSize);
if(oldGridSize < o->gridSize)
world.scale_up(WorldScalar(o->gridSize - oldGridSize) * CANVAS_SCALE_UP_STEP);
world.scale_up(get_canvas_scale_up_amount(o->gridSize, oldGridSize));
break;
}
}
@ -101,7 +101,7 @@ void ClientData::register_class(World& world) {
uint32_t oldGridSize = o->gridSize;
a(o->gridSize);
if(oldGridSize < o->gridSize)
world.scale_up(WorldScalar(o->gridSize - oldGridSize) * CANVAS_SCALE_UP_STEP);
world.scale_up(get_canvas_scale_up_amount(o->gridSize, oldGridSize));
o.send_server_update_to_all_clients(RELIABLE_COMMAND_CHANNEL, [](const NetObjTemporaryPtr<ClientData>& o, cereal::PortableBinaryOutputArchive & a) {
a(ClientDataCommand::SET_GRID_SIZE, o->gridSize);
});

View file

@ -74,7 +74,7 @@ void DrawingProgram::init_server_callbacks() {
if(clientData->get_grid_size() < world.ownClientData->get_grid_size()) {
WorldScalar scaleUpAmount = get_canvas_scale_up_amount(world.ownClientData->get_grid_size(), clientData->get_grid_size());
for(auto& [netID, coord] : transforms)
coord.inverseScale *= scaleUpAmount;
coord.scale_about(WorldVec{0, 0}, scaleUpAmount, true);
}
process_transform_message(transforms);

View file

@ -1,5 +1,5 @@
#include "ScaleUpCanvas.hpp"
WorldScalar get_canvas_scale_up_amount(uint32_t newGridSize, uint32_t oldGridSize) {
return WorldScalar(newGridSize - oldGridSize) * CANVAS_SCALE_UP_STEP;
return FixedPoint::pow_int(CANVAS_SCALE_UP_STEP, newGridSize - oldGridSize);
}