From 7f620d1556b005f81dcc32ff3d64cb167c849c2e Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Sat, 13 Jun 2020 10:54:37 -0400 Subject: [PATCH] Fix incorrect fitting behavior The fit button now zooms to just one entity, and when many entities are added at once, the camera fits to all of them. --- macrovision.js | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/macrovision.js b/macrovision.js index 7f8ab2af..64d96d48 100644 --- a/macrovision.js +++ b/macrovision.js @@ -936,7 +936,9 @@ function configEntityOptions(entity, view) { } if (config.autoFitSize) { - fitEntities([selected]); + let targets = {}; + targets[selected.dataset.key] = entities[selected.dataset.key]; + fitEntities(targets); } }); @@ -2398,7 +2400,9 @@ document.addEventListener("DOMContentLoaded", () => { document.querySelector("#fit").addEventListener("click", e => { if (selected) { - fitEntities([selected]); + let targets = {}; + targets[selected.dataset.key] = entities[selected.dataset.key]; + fitEntities(targets); } }); @@ -2837,12 +2841,17 @@ function prepareEntities() { const entity = maker.constructor() displayEntity(entity, entity.view, -worldWidth * 0.45 + config.x + worldWidth * 0.9 * index / (count - 1), config.y); index += 1; - entity; + return entityIndex - 1; }); updateSizes(true); - if (config.autoFitAdd) - fitEntities(spawned); + if (config.autoFitAdd) { + let targets = {}; + spawned.forEach(key => { + targets[key] = entities[key]; + }) + fitEntities(targets); + } }); Array.from(filterSets[filter.id]).map(name => [name, filter.render(name)]).sort(filterDefs[filter.id].sort).forEach(name => { @@ -3084,7 +3093,7 @@ function fitWorld(manual = false, factor = 1.1) { fitEntities(entities, factor); } -function fitEntities(manual = false, factor = 1.1) { +function fitEntities(targetEntities, manual = false, factor = 1.1) { let minX = Infinity; let maxX = -Infinity; let minY = Infinity; @@ -3096,7 +3105,7 @@ function fitEntities(manual = false, factor = 1.1) { const worldHeight = config.height.toNumber("meters"); - Object.entries(entities).forEach(([key, entity]) => { + Object.entries(targetEntities).forEach(([key, entity]) => { const view = entity.view; let extra = entity.views[view].image.extra;