SETObject
/*
Author
2004 - 2008
Till Bovermann
Neuroinformatics Group
Faculty of Technology
Bielefeld University
Germany
*/
Abstract class. See
SETObject.subclasses
for implementations.
Representation of a tangible object in SuperCollider.
Used at [SETOServer].
Each object-change first sets the changed parameter slots to the new values and
then calls
SETObject:update
Recognized SETO types are
2Dobj
/tuio/2Dobj set <sessionID> ixyaXYAmr
/tuio/2Dobj alive [sessionID * #numberOfActiveObjects]
3Dobj
/tuio/3Dobj set <sessionID> ixyzabcXYZABCmr
/tuio/3Dobj alive [sessionID * #numberOfActiveObjects]
and a combination of
_[ixyzabcXYZABCmrP]
each object may has
sessionID temporary object ID (required)
i class ID
x,y,z position in [0..1]
a,b,c rotation in [0..2pi], OR
u, v, w rotation in axis notation
X,Y,Z velocity in float
A,B,C rotation velocity in euler coordinates
U,V,W rotation velocity in axis notation
m pos. acceleration
r rot. acceleration
P freely definable
// create a TUIObject, and use it to store messages coming from an [OSCReceiver]
t = SETObject('2DObj', 4711);
r = OSCReceiver('/tuio/2Dobj', nil);
/*
r = OSCReceiver('/tuio/2Dobj', NetAddr("127.0.0.1", 57120));
*/
r.start;
OSCReceiverFunction(r, \set, {|sessionID, i, x, y, a, dX, dY, dA, m, r|
[sessionID, i, x, y, a, dX, dY, dA, m, r].postln;
// t.id = sessionID; // not possible; id only settable at instantiation.
t.classID = i;
t.pos = [x,y,a];
t.velocity = [dX, dY, dA];
t.acceleration = [m,r];
});
// send some update messages
a = NetAddr("127.0.0.1", 57120);
a.sendMsg('/tuio/2Dobj', \set, 4711, 42, 0, 1, 2, 3, 4, 5, 6, 7);
(
(
("ID:\t"+t.id) + "\n" ++
("Class:\t"+t.classID) + "\n" ++
("Position:\t"+t.pos) + "\n" ++
("Velocity:\t"+t.velocity) + "\n" ++
("Acceleration:\t" +t.acceleration)
).postln;
)