// this config defines various heightmap brushes // a brush has two parts: the brushmap and the brushhandle // the brushmap is a 2D field that defines how the brush affects a heightmap // the brushhandle is a 2D vertex on the brushmap. // this handle is a reference point on the brushmap which represents // where the editing cursor is pointed at. // clearbrush : resets the brushmap // brushvert : set a point on the brushmap // brushx : the x coordinate of the brushhandle // brushy : the y coordinate of the brushhandle brushhandle = [ brushx $arg1 brushy $arg2 ] brushindex = -1 brushmax = -1 // make sure to bump this up if you add more brushes selectbrush = [ brushindex = ( + $brushindex $arg1 ) if (< $brushindex 0) [ brushindex = $brushmax ] if (> $brushindex $brushmax) [ brushindex = 0 ] do [brush_@brushindex] echo "heightmap brush set to:" $brushname ] brushverts = [ loop y (listlen $arg1) [ bv = (at $arg1 $y) loop x (listlen $bv) [ brushvert $x $y (at $bv $x) ] ] ] newbrush = [ brushmax = (+ $brushmax 1) do [ brush_@brushmax = [ brushname = [@@@arg1] clearbrush @@(if (> $numargs 1) [result [brushhandle @arg2 @arg3; brushverts [@@arg4]]]) ] ] ] newbrush "Circle 1-0" 0 0 [1] newbrush "Circle 2-1" 2 2 [ "" "0 0 1 " "0 1 2 1 " "0 0 1 " ] newbrush "Circle 4-2-1" 2 2 [ "0 0 1 " "0 1 2 1 " "1 2 4 2 1 " "0 1 2 1 " "0 0 1 " ] newbrush "Square 3x3" 1 1 [ "1 1 1 " "1 1 1 " "1 1 1 " ] newbrush "Square 5x5" 2 2 [ "1 1 1 1 1 " "1 1 1 1 1 " "1 1 1 1 1 " "1 1 1 1 1 " "1 1 1 1 1 " ] newbrush "Square 7x7" 3 3 [ "1 1 1 1 1 1 1 " "1 1 1 1 1 1 1 " "1 1 1 1 1 1 1 " "1 1 1 1 1 1 1 " "1 1 1 1 1 1 1 " "1 1 1 1 1 1 1 " "1 1 1 1 1 1 1 " ] newbrush "Smooth 3x3" 1 1 [ "0 0 0 " "0 " "0 " ] newbrush "Smooth 5x5" 2 2 [ "0 0 0 0 0 " "0 " "0 " "0 " "0 " ] newbrush "Smooth 7x7" 3 3 [ "0 0 0 0 0 0 0" "0 " "0 " "0 " "0 " "0 " "0 " ] newbrush "Noise 25x25" 12 12 [ "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 " "" "0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 " "0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 2 2 " "0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 " "0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 1 0 0 0 1 1 0 0 1 " "0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 2 " "0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 2 " "0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 " "0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 " "0 1 0 2 0 1 1 1 1 0 0 1 0 0 0 0 1 " "0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 " "1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 " "0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 " "0 1 1 1 0 3 0 2 0 0 0 1 1 0 0 0 1 1 " "0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 1 " "0 0 1 1 0 0 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 " "0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 " "1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 " "0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 1 " "0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 " "0 0 0 0 1 0 1 1 0 2 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 " "0 0 0 0 0 0 0 0 0 1 0 1 " "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 " ] do [ brush_2 ] // 421