angle = 0 dist = 255/2 unit = 255/10 diagnol = 50 function moveZone(center, zid, angle, offset) local zone local p1 local p2 local p3 local p4 local zoneCenter zone = levelgen:findObjectById(zid) zoneCenter = point.new(center.x + ((unit + unit + dist)*math.cos(angle + offset)), center.y + ((unit + unit + dist)*math.sin(angle + offset))) p1 = point.new(zoneCenter.x + (diagnol*math.cos(angle + offset + (5*math.pi/4))), zoneCenter.y + (diagnol*math.sin(angle + offset + (5*math.pi/4)))) p2 = point.new(zoneCenter.x + (diagnol*math.cos(angle + offset + (3*math.pi/4))), zoneCenter.y + (diagnol*math.sin(angle + offset + (3*math.pi/4)))) p3 = point.new(zoneCenter.x + (diagnol*math.cos(angle + offset + (7*math.pi/4))), zoneCenter.y + (diagnol*math.sin(angle + offset + (7*math.pi/4)))) p4 = point.new(zoneCenter.x + (diagnol*math.cos(angle + offset + (1*math.pi/4))), zoneCenter.y + (diagnol*math.sin(angle + offset + (1*math.pi/4)))) logprint(zoneCenter) zone:setGeom(p2, p1, p3, p4) end function onTick() angle = angle + .1 local item local loc item = levelgen:findObjectById(1) loc = item:getLoc() moveZone(loc, 5, -angle, 0) moveZone(loc, 6, -angle, math.pi/2) moveZone(loc, 7, -angle, math.pi) moveZone(loc, 8, -angle, 3*math.pi/2) item = levelgen:findObjectById(3) loc = item:getLoc() moveZone(loc, 9, -angle, 0) moveZone(loc, 10, -angle, math.pi/2) moveZone(loc, 11, -angle, math.pi) moveZone(loc, 12, -angle, 3*math.pi/2) item = levelgen:findObjectById(21) loc = item:getLoc() moveZone(loc, 25, -angle, 0) moveZone(loc, 26, -angle, math.pi/2) moveZone(loc, 27, -angle, math.pi) moveZone(loc, 28, -angle, 3*math.pi/2) item = levelgen:findObjectById(2) loc = item:getLoc() moveZone(loc, 13, angle, math.pi/4) moveZone(loc, 14, angle, 3*math.pi/4) moveZone(loc, 15, angle, 5*math.pi/4) moveZone(loc, 16, angle, 7*math.pi/4) item = levelgen:findObjectById(4) loc = item:getLoc() moveZone(loc, 17, angle, math.pi/4) moveZone(loc, 18, angle, 3*math.pi/4) moveZone(loc, 19, angle, 5*math.pi/4) moveZone(loc, 20, angle, 7*math.pi/4) item = levelgen:findObjectById(22) loc = item:getLoc() moveZone(loc, 29, angle, math.pi/4) moveZone(loc, 30, angle, 3*math.pi/4) moveZone(loc, 31, angle, 5*math.pi/4) moveZone(loc, 32, angle, 7*math.pi/4) item = levelgen:findObjectById(24) loc = item:getLoc() moveZone(loc, 33, angle, math.pi/4) moveZone(loc, 34, angle, 3*math.pi/4) moveZone(loc, 35, angle, 5*math.pi/4) moveZone(loc, 36, angle, 7*math.pi/4) --move the piston --63.75 item = levelgen:findObjectById(37) local p1 = point.new(-165.75-(63.75*math.sin(angle)), -293.3) local p2 = point.new(-165.75-(63.75*math.sin(angle)), -344.3) local p3 = point.new(-165.75+(5*unit)-(63.75*math.sin(angle)), -293.3) local p4 = point.new(-165.75+(5*unit)-(63.75*math.sin(angle)), -344.3) item:setGeom(p2, p1, p3, p4) end function main() subscribe(Event.Tick) end