animate_viewport_to = function(v)
local global_viewport, globalw, globalh = initialize_global_viewport()
local canvas = snapshot_canvas(global_viewport, globalw, globalh)
v = v or global_viewport
local initial = copy_viewport(Viewport)
local final = v
local step, frame_time = 0, 0
while true do
love.event.pump()
for name, a,b,c,d,e,f in love.event.poll() do
if name == "quit" then
os.exit(0)
end
-- ignore other events
end
-- update
dt = love.timer.step()
frame_time = frame_time + dt
if frame_time > 0.01 then
frame_time = frame_time - 0.01
step = step + 1
if step > Num_animation_frames then
break
end
interpolate_viewport(initial, final, step)
--? print('animation frame: Viewport is now', Viewport.x, Viewport.y, Viewport.zoom)
B()
end
-- draw
love.graphics.origin()
love.graphics.clear(love.graphics.getBackgroundColor())
local q = love.graphics.newQuad(
(Viewport.x-global_viewport.x)*Viewport.zoom,
(Viewport.y-global_viewport.y)*Viewport.zoom,
App.screen.width,
App.screen.height,
globalw*Viewport.zoom,
globalh*Viewport.zoom)
App.color{r=1,g=1,b=1}
love.graphics.draw(canvas, q, 0,0)
love.graphics.present()
love.timer.sleep(0.001)
end
A()
end