"ScatterView2";


(

// three dimensional dataset

d = ({1.0.rand}!9000).clump(3);


w = SCWindow.new("ScatterView Example");

v = ScatterView2(w, Rect(10, 10, 380, 380), d);

v.selectionMode = \nextNeighbour;

v.background = Color.black;

w.front;

)


v.selectModes.add(\abc -> ((1..100)))

v.selectionMode = \abc;


v.selectionMode = \nextNeighbour;


v.selectModes.add(\nextNeighbour -> {|view, data, pos, itemSize|

var threshold, index, selected;


threshold = itemSize*2;

index = data.detectIndex{|item|

(item - pos).abs.sum <= threshold;

};

index

})



v.select((1..900))

v.selection

v.selectionMode = \surrounding;

v.selectRegion = 0.021

v.itemSize = 5


v.data = d;

v.action = {|indices|

indices.postln;

d[indices].postln

}



v.colorFunc = {|idx, selected|

selected.if({Color.red}, {Color.hsv(d[idx][2], 1, 0.2)})

}


v.colorFunc = Color.red(1, 0.5)