Przeglądaj źródła

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.
master
Fen Dweller 5 lat temu
rodzic
commit
7f620d1556
1 zmienionych plików z 16 dodań i 7 usunięć
  1. +16
    -7
      macrovision.js

+ 16
- 7
macrovision.js Wyświetl plik

@@ -936,7 +936,9 @@ function configEntityOptions(entity, view) {
} }


if (config.autoFitSize) { 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 => { document.querySelector("#fit").addEventListener("click", e => {
if (selected) { 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() const entity = maker.constructor()
displayEntity(entity, entity.view, -worldWidth * 0.45 + config.x + worldWidth * 0.9 * index / (count - 1), config.y); displayEntity(entity, entity.view, -worldWidth * 0.45 + config.x + worldWidth * 0.9 * index / (count - 1), config.y);
index += 1; index += 1;
entity;
return entityIndex - 1;
}); });
updateSizes(true); 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 => { 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); fitEntities(entities, factor);
} }


function fitEntities(manual = false, factor = 1.1) {
function fitEntities(targetEntities, manual = false, factor = 1.1) {
let minX = Infinity; let minX = Infinity;
let maxX = -Infinity; let maxX = -Infinity;
let minY = Infinity; let minY = Infinity;
@@ -3096,7 +3105,7 @@ function fitEntities(manual = false, factor = 1.1) {
const worldHeight = config.height.toNumber("meters"); const worldHeight = config.height.toNumber("meters");




Object.entries(entities).forEach(([key, entity]) => {
Object.entries(targetEntities).forEach(([key, entity]) => {
const view = entity.view; const view = entity.view;


let extra = entity.views[view].image.extra; let extra = entity.views[view].image.extra;


Ładowanie…
Anuluj
Zapisz