Browse Source

Use framerate-independent lerp. Very Freya-esque in that sense.

master
Aleksey Olokhtonov 4 days ago
parent
commit
268a55b71b
  1. 11
      client/webgl_draw.js
  2. 2
      client/webgl_listeners.js

11
client/webgl_draw.js

@ -630,18 +630,21 @@ async function draw(state, context, animate, ts) {
} }
if (state.canvas.target_zoom != state.canvas.zoom) { if (state.canvas.target_zoom != state.canvas.zoom) {
update_canvas_zoom(state, state.canvas.zoom, state.canvas.target_zoom, animate ? dt : context.last_frame_dt); update_canvas_zoom(state, state.canvas.zoom, state.canvas.target_zoom, animate ? dt : 0);
schedule_draw(state, context, true); schedule_draw(state, context, true);
} }
}
context.last_frame_dt = dt; // https://www.youtube.com/watch?v=LSNQuFEDOyQ
function exp_decay(a, b, decay, dt) {
return b + (a - b) * Math.exp(-decay * dt);
} }
function update_canvas_zoom(state, current, target, dt) { function update_canvas_zoom(state, current, target, dt) {
const rate = Math.min(1.0, dt / 16.66 * 0.3); const decay = 16;
if (Math.abs(1.0 - current / target) > 0.01) { if (Math.abs(1.0 - current / target) > 0.01) {
state.canvas.zoom = current + (target - current) * rate; state.canvas.zoom = exp_decay(state.canvas.zoom, target, decay, dt / 1000.0);
} else { } else {
state.canvas.zoom = target; state.canvas.zoom = target;
} }

2
client/webgl_listeners.js

@ -91,7 +91,7 @@ function zenmode() {
} }
function enter_picker_mode(state, context) { function enter_picker_mode(state, context) {
if (state.tools.active === 'pencil') { // or other drawing tools if (['pencil', 'ruler'].includes(state.tools.active)) { // or other drawing tools
document.querySelector('canvas').classList.add('picker'); document.querySelector('canvas').classList.add('picker');
document.querySelector('.picker-preview-outer').classList.remove('dhide'); document.querySelector('.picker-preview-outer').classList.remove('dhide');
document.querySelector('.brush-dom').classList.add('dhide'); document.querySelector('.brush-dom').classList.add('dhide');

Loading…
Cancel
Save