|
@@ -11,30 +11,85 @@ using bbiwarg.Utility;
|
|
|
|
|
|
namespace TUIO
|
|
namespace TUIO
|
|
{
|
|
{
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
class TuioServer
|
|
class TuioServer
|
|
{
|
|
{
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
const int MAX_PACKET_SIZE = 65535 - 8;
|
|
const int MAX_PACKET_SIZE = 65535 - 8;
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private OSCTransmitter transmitter = null;
|
|
private OSCTransmitter transmitter = null;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private String host = "127.0.0.1";
|
|
private String host = "127.0.0.1";
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private int port = 3333;
|
|
private int port = 3333;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private long sessionID = 0;
|
|
private long sessionID = 0;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private TuioTime currentFrameTime;
|
|
private TuioTime currentFrameTime;
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private List<TuioCursor> cursorList;
|
|
private List<TuioCursor> cursorList;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private List<TuioCursor> updatedCursorList;
|
|
private List<TuioCursor> updatedCursorList;
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private List<TuioObject> objectList;
|
|
private List<TuioObject> objectList;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private List<TuioObject> updatedObjectList;
|
|
private List<TuioObject> updatedObjectList;
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public TuioServer() { init(); }
|
|
public TuioServer() { init(); }
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public TuioServer(int port)
|
|
public TuioServer(int port)
|
|
{
|
|
{
|
|
this.port = port;
|
|
this.port = port;
|
|
init();
|
|
init();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public TuioServer(String host, int port)
|
|
public TuioServer(String host, int port)
|
|
{
|
|
{
|
|
this.host = host;
|
|
this.host = host;
|
|
@@ -42,6 +97,9 @@ namespace TUIO
|
|
init();
|
|
init();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private void init()
|
|
private void init()
|
|
{
|
|
{
|
|
TuioTime.initSession();
|
|
TuioTime.initSession();
|
|
@@ -50,12 +108,20 @@ namespace TUIO
|
|
transmitter = new OSCTransmitter(host, port);
|
|
transmitter = new OSCTransmitter(host, port);
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public void close()
|
|
public void close()
|
|
{
|
|
{
|
|
transmitter.Close();
|
|
transmitter.Close();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public TuioCursor addTuioCursor(float xp, float yp)
|
|
public TuioCursor addTuioCursor(float xp, float yp)
|
|
{
|
|
{
|
|
TuioCursor tcur = new TuioCursor(sessionID, cursorList.Count, xp, yp);
|
|
TuioCursor tcur = new TuioCursor(sessionID, cursorList.Count, xp, yp);
|
|
@@ -66,6 +132,12 @@ namespace TUIO
|
|
return tcur;
|
|
return tcur;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public void updateTuioCursor(TuioCursor tcur, float xp, float yp)
|
|
public void updateTuioCursor(TuioCursor tcur, float xp, float yp)
|
|
{
|
|
{
|
|
tcur.update(currentFrameTime, xp, yp);
|
|
tcur.update(currentFrameTime, xp, yp);
|
|
@@ -73,11 +145,22 @@ namespace TUIO
|
|
updatedCursorList.Add(tcur);
|
|
updatedCursorList.Add(tcur);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public void removeTuioCursor(TuioCursor tcur)
|
|
public void removeTuioCursor(TuioCursor tcur)
|
|
{
|
|
{
|
|
cursorList.Remove(tcur);
|
|
cursorList.Remove(tcur);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public TuioObject addTuioObject(float xp, float yp, float angle)
|
|
public TuioObject addTuioObject(float xp, float yp, float angle)
|
|
{
|
|
{
|
|
TuioObject tobj = new TuioObject(sessionID, objectList.Count, xp, yp, angle);
|
|
TuioObject tobj = new TuioObject(sessionID, objectList.Count, xp, yp, angle);
|
|
@@ -88,6 +171,12 @@ namespace TUIO
|
|
return tobj;
|
|
return tobj;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public void updateTuioObject(TuioObject tobj, float xp, float yp)
|
|
public void updateTuioObject(TuioObject tobj, float xp, float yp)
|
|
{
|
|
{
|
|
tobj.update(currentFrameTime, xp, yp);
|
|
tobj.update(currentFrameTime, xp, yp);
|
|
@@ -95,11 +184,18 @@ namespace TUIO
|
|
updatedObjectList.Add(tobj);
|
|
updatedObjectList.Add(tobj);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public void removeTuioObject(TuioObject tobj)
|
|
public void removeTuioObject(TuioObject tobj)
|
|
{
|
|
{
|
|
objectList.Remove(tobj);
|
|
objectList.Remove(tobj);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public void initFrame()
|
|
public void initFrame()
|
|
{
|
|
{
|
|
currentFrameTime = TuioTime.getSessionTime();
|
|
currentFrameTime = TuioTime.getSessionTime();
|
|
@@ -107,16 +203,27 @@ namespace TUIO
|
|
updatedObjectList = new List<TuioObject>();
|
|
updatedObjectList = new List<TuioObject>();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public void commitFrame()
|
|
public void commitFrame()
|
|
{
|
|
{
|
|
sendMessage(updatedCursorList, updatedObjectList);
|
|
sendMessage(updatedCursorList, updatedObjectList);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
public void sendFullMessages()
|
|
public void sendFullMessages()
|
|
{
|
|
{
|
|
sendMessage(cursorList, objectList);
|
|
sendMessage(cursorList, objectList);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private void sendMessage(List<TuioCursor> cursorList, List<TuioObject> objectList)
|
|
private void sendMessage(List<TuioCursor> cursorList, List<TuioObject> objectList)
|
|
{
|
|
{
|
|
OSCBundle packet = new OSCBundle();
|
|
OSCBundle packet = new OSCBundle();
|
|
@@ -136,15 +243,6 @@ namespace TUIO
|
|
currentMessage.Append(tcur.getXSpeed());
|
|
currentMessage.Append(tcur.getXSpeed());
|
|
currentMessage.Append(tcur.getYSpeed());
|
|
currentMessage.Append(tcur.getYSpeed());
|
|
currentMessage.Append(tcur.getMotionAccel());
|
|
currentMessage.Append(tcur.getMotionAccel());
|
|
-
|
|
|
|
-
|
|
|
|
- {
|
|
|
|
- packet.AddElement(new OscElement("/tuio/2Dcur", new Object[] { "fseq", -1 }));
|
|
|
|
- udpwriter.Send(packet);
|
|
|
|
-
|
|
|
|
- packet = new OscBundle();
|
|
|
|
- addAliveCursorMessagesToBundle(packet);
|
|
|
|
- }*/
|
|
|
|
packet.Append(currentMessage);
|
|
packet.Append(currentMessage);
|
|
}
|
|
}
|
|
currentMessage = new OSCMessage("/tuio/2Dcur");
|
|
currentMessage = new OSCMessage("/tuio/2Dcur");
|
|
@@ -185,6 +283,10 @@ namespace TUIO
|
|
transmitter.Send(packet);
|
|
transmitter.Send(packet);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private void addAliveCursorMessagesToBundle(OSCBundle packet)
|
|
private void addAliveCursorMessagesToBundle(OSCBundle packet)
|
|
{
|
|
{
|
|
OSCMessage mssg = new OSCMessage("/tuio/2Dcur");
|
|
OSCMessage mssg = new OSCMessage("/tuio/2Dcur");
|
|
@@ -196,6 +298,10 @@ namespace TUIO
|
|
packet.Append(mssg);
|
|
packet.Append(mssg);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
private void addAliveObjectMessagesToBundle(OSCBundle packet)
|
|
private void addAliveObjectMessagesToBundle(OSCBundle packet)
|
|
{
|
|
{
|
|
OSCMessage mssg = new OSCMessage("/tuio/2Dobj");
|
|
OSCMessage mssg = new OSCMessage("/tuio/2Dobj");
|