import "CoreLibs/animator" local gfx = playdate.graphics local imgSaw = gfx.image.new("gfx/sawblade") local imgTarget = gfx.image.new("gfx/target") assert(imgSaw) assert(imgTarget) local blades = {} function loadBlades(_blades) for i = 1, #_blades,1 do local b = _blades[i] b.start = playdate.geometry.point.new(b.start.x,b.start.y) b.ends = playdate.geometry.point.new(b.ends.x,b.ends.y) b.saw = gfx.sprite.new(imgSaw) b.saw:moveTo(b.start) b.saw:setCollideRect(0,0,16,16) b.saw:add() local a = gfx.animator.new(b.speed*1000, b.start, b.ends) b.saw:setAnimator(a) b.t1 = gfx.sprite.new(imgTarget) b.t1:moveTo(b.start) b.t2 = gfx.sprite.new(imgTarget) b.t2:moveTo(b.ends) b.t1:add() b.t2:add() blades[i] = b end end function updateSaws() for b=1, #blades, 1 do b = blades[b] local pos = playdate.geometry.point.new(b.saw:getPosition()) if pos == b.start then local a = gfx.animator.new(b.speed*1000, b.start, b.ends) b.saw:setAnimator(a) elseif pos == b.ends then local a = gfx.animator.new(b.speed*1000, b.ends, b.start) b.saw:setAnimator(a) end end end function killBlades() for i = 1, #blades, 1 do blades[i].t1:remove() blades[i].t2:remove() blades[i].saw:remove() end blades = {} end