Browse Source

Add some code for panning around automatically (not used yet)

master
Fen Dweller 4 years ago
parent
commit
b6159f398f
1 changed files with 44 additions and 0 deletions
  1. +44
    -0
      macrovision.js

+ 44
- 0
macrovision.js View File

@@ -4289,4 +4289,48 @@ function toastRateLimit(msg, key, delay) {
delete rateLimits[key]
}, delay);
}
}
let lastTime = undefined;

function pan(fromX, fromY, fromHeight, toX, toY, toHeight, duration) {

Object.keys(entities).forEach(key => {
document.querySelector("#entity-" + key).classList.add("no-transition");
});

config.x = fromX;
config.y = fromY;
config.height = math.unit(fromHeight, "meters")
updateSizes();

lastTime = undefined;

requestAnimationFrame((timestamp) => panTo(toX, toY, toHeight, (toX - fromX) / duration, (toY - fromY) / duration, (toHeight - fromHeight) / duration, timestamp, duration));
}

function panTo(x, y, height, xSpeed, ySpeed, heightSpeed, timestamp, remaining) {
if (lastTime === undefined) {
lastTime = timestamp;
}
dt = timestamp - lastTime;
remaining -= dt;
console.log(lastTime, remaining, dt)
if (remaining < 0) {
dt += remaining
}
let newX = config.x + xSpeed * dt;
let newY = config.y + ySpeed * dt;
let newHeight = config.height.toNumber("meters") + heightSpeed * dt;
console.log(newX);
if (remaining > 0) {
requestAnimationFrame((timestamp) => panTo(x, y, height, xSpeed, ySpeed, heightSpeed, timestamp, remaining))
} else {
Object.keys(entities).forEach(key => {
document.querySelector("#entity-" + key).classList.remove("no-transition");
});
}
config.x = newX;
config.y = newY;
config.height = math.unit(newHeight, "meters");
updateSizes();
}

Loading…
Cancel
Save