diff --git a/release-packaging/Classes/FluidDataSet.sc b/release-packaging/Classes/FluidDataSet.sc index 75c7273..74c9ff4 100644 --- a/release-packaging/Classes/FluidDataSet.sc +++ b/release-packaging/Classes/FluidDataSet.sc @@ -101,7 +101,7 @@ FluidDataSet : FluidDataObject actions[\getIds] = [nil,action]; this.prSendMsg(this.getIdsMsg(labelSet)); } - + kNearestMsg{|buffer,k| ^this.prMakeMsg(\kNearest,id, this.prEncodeBuffer(buffer),k); } @@ -119,4 +119,23 @@ FluidDataSet : FluidDataObject actions[\kNearestDist] = [numbers(FluidMessageResponse,_,nil,_),action]; this.prSendMsg(this.kNearestDistMsg(buffer,k)); } + + kr{|trig, inputBuffer, outputBuffer, numNeighbours, lookupDataSet| + ^FluidDataSetRead.kr(trig, + this, numNeighbours??{this.numNeighbours}, lookupDataSet.asUGenInput, + inputBuffer,outputBuffer); + } +} + +FluidDataSetRead : FluidRTMultiOutUGen +{ + *kr{ |trig, ds, numNeighbours, lookupDataSet, inputBuffer, outputBuffer | + ^this.multiNew('control', trig, ds.asUGenInput, numNeighbours, lookupDataSet!?(_.asUGenInput)??{-1}, inputBuffer.asUGenInput, outputBuffer.asUGenInput) + } + + init { arg ... theInputs; + inputs = theInputs; + ^this.initOutputs(1, rate); + } + } diff --git a/scripts/settings/FluidManipulation.cpp.in b/scripts/settings/FluidManipulation.cpp.in index f835956..fadbcc1 100644 --- a/scripts/settings/FluidManipulation.cpp.in +++ b/scripts/settings/FluidManipulation.cpp.in @@ -1,3 +1,4 @@ + makeSCWrapper("FluidDataSetRead",inTable); makeSCWrapper("FluidKDTreeQuery",inTable); makeSCWrapper("FluidKMeansQuery",inTable); makeSCWrapper("FluidSKMeansQuery",inTable);