function param1() return "angle", 0, 100, 50 end function param2() return "num", 3, 100, 5 end function param3() return "roundness", 1, 100, 35 end function main( x, y, p ) local z = 1.0 local w = bs_width_max() / 2 * z if w < 5 then w = 5 end if not firstDraw then local distance = bs_distance( lastDrawX - x, lastDrawY - y ) if distance < w*2 then return 0 end end local i local rad = 3.14159*2 / (bs_param2() * 2) for i = 0,bs_param2()-1 do bs_polygon( bs_rotate( 0, -1.0, rad * i*2 ) ) bs_polygon( bs_rotate( 0, -bs_param3()/100.0, rad * (i*2 + 1) ) ) end bs_polygon( bs_rotate( 0, -1, rad * 0 ) ) bs_polygon_mul( w, w ) bs_polygon_rotate( (bs_param1() - 50)/50*3.14159 ) bs_polygon_move( x, y ) local r,g,b = bs_fore() bs_fill( r,g,b, 255 ) lastDrawX = x lastDrawY = y firstDraw = false return 1 end lastDrawX = 0 lastDrawY = 0 firstDraw = true