function param1() return "interval", 10, 100, 50 end function param2() return "angle", 0, 100, 0 end function set_line( w ) bs_polygon( 0.0, -0.05 ) bs_polygon( 0.2, -0.05 ) bs_polygon( 1.0, 0.0 ) bs_polygon( 0.2, 0.05 ) bs_polygon( 0.0, 0.05 ) bs_polygon( -0.2, 0.05 ) bs_polygon( -1.0, 0.0 ) bs_polygon( -0.2, -0.05 ) bs_polygon( 0.0, -0.05 ) bs_polygon_mul( w*3, w ) end function main( x, y, p ) local w = bs_width_max() * 0.25 if w < 5 then w = 5 end if not firstDraw then local distance = bs_distance( lastDrawX - x, lastDrawY - y ) if distance < w * bs_param1()/20 then return 0 end end local r,g,b = bs_fore() local dx,dy = bs_dir() local nx,ny = bs_normal() local rad = bs_param2()/31.4159/4 local alpha = 255 * bs_opaque() local i for i=0,4 do local idx = i - 2 set_line( w ) bs_polygon_move( 0, -idx*w/2 ) bs_polygon_rotate( bs_atan( dx, dy ) + rad ) bs_polygon_move( x, y ) bs_fill( r,g,b,alpha ) end for i=0,4 do local idx = i - 2 set_line( w ) bs_polygon_move( 0, -idx*w/2 ) bs_polygon_rotate( bs_atan( dx, dy ) + 3.14159/2 + rad ) bs_polygon_move( x, y ) bs_fill( r,g,b,alpha ) end for i=0,4 do local idx = i - 2 set_line( w ) bs_polygon_move( 0, -idx*w/2 ) bs_polygon_rotate( bs_atan( dx, dy ) + 3.14159/4 + rad ) bs_polygon_move( x, y ) bs_fill( r,g,b,alpha ) end for i=0,4 do local idx = i - 2 set_line( w ) bs_polygon_move( 0, -idx*w/2 ) bs_polygon_rotate( bs_atan( dx, dy ) + -3.14159/4 + rad ) bs_polygon_move( x, y ) bs_fill( r,g,b,alpha ) end lastDrawX = x lastDrawY = y firstDraw = false return 1 end lastDrawX = 0 lastDrawY = 0 firstDraw = true