front_idill/extern/fajran-npTuioClient/TuioClient/TuioClient.cpp
author bastiena
Thu, 12 Apr 2012 13:09:46 +0200
changeset 27 6c08d4d7219e
parent 25 a7b0e40bcab0
child 28 9ccef81f02ab
permissions -rw-r--r--
Middleware : GPL License added. Front Processing : GPL License added. Front IDILL : extern altered to send TUIO cursors from Middleware to Front. implemented as a plugin.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
     1
/*
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
     2
	TUIO C++ Library - part of the reacTIVision project
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
     3
	http://reactivision.sourceforge.net/
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
     4
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
     5
	Copyright (c) 2005-2008 Martin Kaltenbrunner <mkalten@iua.upf.edu>
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
     6
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
     7
    This program is free software; you can redistribute it and/or modify
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
     8
    it under the terms of the GNU General Public License as published by
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
     9
    the Free Software Foundation; either version 2 of the License, or
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    10
    (at your option) any later version.
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    11
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    12
    This program is distributed in the hope that it will be useful,
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    13
    but WITHOUT ANY WARRANTY; without even the implied warranty of
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    14
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    15
    GNU General Public License for more details.
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    16
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    17
    You should have received a copy of the GNU General Public License
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    18
    along with this program; if not, write to the Free Software
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    19
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    20
*/
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    22
#include "TuioClient.h"
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    23
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    24
#ifndef WIN32
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    25
static void* ThreadFunc( void* obj )
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    26
#else
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    27
static DWORD WINAPI ThreadFunc( LPVOID obj )
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    28
#endif
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    29
{
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    30
	static_cast<TuioClient*>(obj)->socket->Run();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    31
	return 0;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    32
};
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    33
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    34
using namespace std;
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    35
	
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    36
TuioClient::TuioClient() {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    37
	TuioClient(3333);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    38
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    39
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    40
TuioClient::TuioClient(int port) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    41
	try {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    42
		socket = new UdpListeningReceiveSocket(IpEndpointName( IpEndpointName::ANY_ADDRESS, port ), this );
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    43
	} catch (std::exception &e) { 
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    44
		std::cout << "could not bind to UDP port " << port << std::endl;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    45
		socket = NULL;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    46
	}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    47
	
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    48
	if (socket!=NULL) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    49
		if (!socket->IsBound()) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    50
			delete socket;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    51
			socket = NULL;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    52
		} else std::cout << "listening to TUIO messages on UDP port " << port << std::endl;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    53
	}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    54
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    55
	locked = false;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    56
	running = false;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    57
	currentFrame = lastFrame = maxFingerID = maxStringID = -1;
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    58
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    59
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    60
TuioClient::~TuioClient() {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    61
	delete socket;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    62
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    63
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    64
void TuioClient::ProcessBundle( const ReceivedBundle& b, const IpEndpointName& remoteEndpoint) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    65
	for( ReceivedBundle::const_iterator i = b.ElementsBegin(); i != b.ElementsEnd(); ++i ){
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    66
		if( i->IsBundle() )
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    67
			ProcessBundle( ReceivedBundle(*i), remoteEndpoint);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    68
		else
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    69
			ProcessMessage( ReceivedMessage(*i), remoteEndpoint);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    70
	}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    71
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    72
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    73
void TuioClient::ProcessMessage( const ReceivedMessage& msg, const IpEndpointName& remoteEndpoint)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    74
{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    75
	try
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    76
	{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    77
		ReceivedMessageArgumentStream args = msg.ArgumentStream();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    78
		ReceivedMessage::const_iterator arg = msg.ArgumentsBegin();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    79
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    80
		if( strcmp( msg.AddressPattern(), "/tuio/2Dobj" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    81
		{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    82
			const char* cmd;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    83
			args >> cmd;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    84
			
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    85
			if( strcmp( cmd, "set" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    86
			{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    87
				if ((currentFrame<lastFrame) && (currentFrame>0)) return;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    88
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    89
				int32 s_id, f_id;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    90
				float xpos, ypos, angle, xspeed, yspeed, rspeed, maccel, raccel;
24
2bdf5d51d434 Front IDILL :
bastiena
parents: 21
diff changeset
    91
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    92
				args >> s_id >> f_id >> xpos >> ypos >> angle >> xspeed >> yspeed >> rspeed >> maccel >> raccel >> EndMessage;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    93
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    94
				std::list<TuioObject*>::iterator tobj;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    95
				for (tobj=objectList.begin(); tobj!= objectList.end(); tobj++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    96
					if((*tobj)->getSessionID()==(long)s_id) break;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
    97
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    98
				if (tobj == objectList.end())
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
    99
				{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   100
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   101
					TuioObject *addObject = new TuioObject((long)s_id,(int)f_id,xpos,ypos,angle);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   102
					objectList.push_back(addObject);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   103
					
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   104
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   105
						(*listener)->addTuioObject(addObject);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   106
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   107
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   108
				else if ( ((*tobj)->getX()!=xpos) || ((*tobj)->getY()!=ypos) || ((*tobj)->getAngle()!=angle) || ((*tobj)->getXSpeed()!=xspeed) || ((*tobj)->getYSpeed()!=yspeed) || ((*tobj)->getRotationSpeed()!=rspeed) || ((*tobj)->getMotionAccel()!=maccel) || ((*tobj)->getRotationAccel()!=raccel) )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   109
				{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   110
					(*tobj)->update(xpos,ypos,angle,xspeed,yspeed,rspeed,maccel,raccel);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   111
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   112
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   113
						(*listener)->updateTuioObject((*tobj));
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   114
				}
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   115
			}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   116
			else if( strcmp( cmd, "alive" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   117
			{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   118
				if ((currentFrame<lastFrame) && (currentFrame>0)) return;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   119
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   120
				int32 s_id;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   121
				while(!args.Eos())
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   122
				{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   123
					args >> s_id;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   124
					objectBuffer.push_back((long)s_id);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   125
					std::list<long>::iterator iter;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   126
					iter = find(aliveObjectList.begin(), aliveObjectList.end(), (long)s_id); 
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   127
					if (iter != aliveObjectList.end()) aliveObjectList.erase(iter);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   128
				}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   129
				args >> EndMessage;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   130
				
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   131
				std::list<long>::iterator alive_iter;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   132
				for (alive_iter=aliveObjectList.begin(); alive_iter != aliveObjectList.end(); alive_iter++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   133
				{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   134
					std::list<TuioObject*>::iterator tobj;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   135
					for (tobj=objectList.begin(); tobj!=objectList.end(); tobj++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   136
					{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   137
						TuioObject *deleteObject = (*tobj);
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   138
						if(deleteObject->getSessionID()==*alive_iter)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   139
						{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   140
							deleteObject->remove();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   141
							for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   142
								(*listener)->removeTuioObject(deleteObject);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   143
							objectList.erase(tobj);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   144
							delete deleteObject;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   145
							break;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   146
						}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   147
					}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   148
				}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   149
				aliveObjectList = objectBuffer;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   150
				objectBuffer.clear();
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   151
			}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   152
			else if( strcmp( cmd, "fseq" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   153
			{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   154
				if(currentFrame>0) lastFrame = currentFrame;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   155
				args >> currentFrame  >> EndMessage;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   156
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   157
				if ((currentFrame>=lastFrame) || (currentFrame<0))
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   158
				{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   159
					long currentTime = lastTime;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   160
					if (currentFrame>lastFrame)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   161
					{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   162
						currentTime = getCurrentTime()-startTime;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   163
						lastTime = currentTime;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   164
					}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   165
					
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   166
					for (std::list<TuioObject*>::iterator refreshObject=objectList.begin(); refreshObject!=objectList.end(); refreshObject++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   167
						if ((*refreshObject)->getUpdateTime()==TUIO_UNDEFINED) (*refreshObject)->setUpdateTime(currentTime);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   168
					
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   169
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener!=listenerList.end(); listener++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   170
						(*listener)->refresh(currentTime);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   171
				}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   172
			}
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   173
		}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   174
		else if( strcmp( msg.AddressPattern(), "/tuio/3Dcur" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   175
		{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   176
			const char* cmd;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   177
			args >> cmd;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   178
			
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   179
			if( strcmp( cmd, "set" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   180
			{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   181
				if ((currentFrame<lastFrame) && (currentFrame>0)) return;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   182
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   183
				int32 s_id;
24
2bdf5d51d434 Front IDILL :
bastiena
parents: 21
diff changeset
   184
				float xpos, ypos, zpos, xspeed, yspeed, maccel;
2bdf5d51d434 Front IDILL :
bastiena
parents: 21
diff changeset
   185
				//Modifi� par alexandre.bastien@iri.centrepompidou.fr
2bdf5d51d434 Front IDILL :
bastiena
parents: 21
diff changeset
   186
				args >> s_id >> xpos >> ypos >> zpos >> xspeed >> yspeed >> maccel >> EndMessage;
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   187
				std::list<TuioCursor*>::iterator tcur;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   188
				for (tcur=cursorList.begin(); tcur != cursorList.end(); tcur++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   189
					if((*tcur)->getSessionID()==(long)s_id) break;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   190
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   191
				if (tcur == cursorList.end())
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   192
				{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   193
					int f_id = (int)cursorList.size();
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   194
					if ((int)(cursorList.size())<=maxFingerID)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   195
					{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   196
						std::list<TuioCursor*>::iterator closestCursor = freeCursorList.begin();
24
2bdf5d51d434 Front IDILL :
bastiena
parents: 21
diff changeset
   197
						//Modifi� par alexandre.bastien@iri.centrepompidou.fr
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   198
						for(std::list<TuioCursor*>::iterator testCursor = freeCursorList.begin();testCursor!= freeCursorList.end(); testCursor++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   199
						{
24
2bdf5d51d434 Front IDILL :
bastiena
parents: 21
diff changeset
   200
							if((*testCursor)->getDistance(xpos,ypos,zpos)<(*closestCursor)->getDistance(xpos,ypos,zpos)) closestCursor = testCursor;
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   201
						}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   202
						f_id = (*closestCursor)->getFingerID();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   203
						freeCursorList.erase(closestCursor);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   204
						delete *closestCursor;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   205
					}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   206
					else maxFingerID = f_id;	
24
2bdf5d51d434 Front IDILL :
bastiena
parents: 21
diff changeset
   207
					//Modifi� par alexandre.bastien@iri.centrepompidou.fr
25
a7b0e40bcab0 Front IDILL :
bastiena
parents: 24
diff changeset
   208
					TuioCursor *addCursor = new TuioCursor((long)s_id,f_id,xpos,ypos,zpos);
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   209
					cursorList.push_back(addCursor);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   210
					
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   211
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   212
						(*listener)->addTuioCursor(addCursor);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   213
					
24
2bdf5d51d434 Front IDILL :
bastiena
parents: 21
diff changeset
   214
				//Modifi� par alexandre.bastien@iri.centrepompidou.fr
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   215
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   216
				else if ( ((*tcur)->getX()!=xpos) || ((*tcur)->getY()!=ypos) || ((*tcur)->getZ()!=zpos) || ((*tcur)->getXSpeed()!=xspeed) || ((*tcur)->getYSpeed()!=yspeed) || ((*tcur)->getMotionAccel()!=maccel) )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   217
				{
25
a7b0e40bcab0 Front IDILL :
bastiena
parents: 24
diff changeset
   218
					(*tcur)->update(xpos,ypos,zpos,xspeed,yspeed,maccel);
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   219
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   220
						(*listener)->updateTuioCursor((*tcur));
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   221
				}
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   222
			}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   223
			else if( strcmp( cmd, "alive" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   224
			{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   225
				if ((currentFrame<lastFrame) && (currentFrame>0)) return;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   226
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   227
				int32 s_id;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   228
				while(!args.Eos())
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   229
				{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   230
					args >> s_id;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   231
					cursorBuffer.push_back((long)s_id);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   232
					std::list<long>::iterator iter;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   233
					iter = find(aliveCursorList.begin(), aliveCursorList.end(), (long)s_id); 
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   234
					if (iter != aliveCursorList.end()) aliveCursorList.erase(iter);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   235
				}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   236
				args >> EndMessage;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   237
				std::list<long>::iterator alive_iter;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   238
				for (alive_iter=aliveCursorList.begin(); alive_iter != aliveCursorList.end(); alive_iter++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   239
				{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   240
					std::list<TuioCursor*>::iterator tcur;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   241
					for (tcur=cursorList.begin(); tcur != cursorList.end(); tcur++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   242
					{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   243
						TuioCursor *deleteCursor = (*tcur);
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   244
						if(deleteCursor->getSessionID()==*alive_iter)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   245
						{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   246
							cursorList.erase(tcur);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   247
							deleteCursor->remove();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   248
							for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   249
								(*listener)->removeTuioCursor(deleteCursor);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   250
							
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   251
							if (deleteCursor->getFingerID()==maxFingerID)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   252
							{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   253
								maxFingerID = -1;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   254
								delete deleteCursor;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   255
								
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   256
								if (cursorList.size()>0)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   257
								{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   258
									std::list<TuioCursor*>::iterator clist;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   259
									for (clist=cursorList.begin(); clist != cursorList.end(); clist++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   260
									{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   261
										int f_id = (*clist)->getFingerID();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   262
										if (f_id>maxFingerID) maxFingerID=f_id;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   263
									}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   264
									std::list<TuioCursor*>::iterator flist;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   265
									for (flist=freeCursorList.begin(); flist != freeCursorList.end(); flist++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   266
									{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   267
										TuioCursor *freeCursor = (*flist);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   268
										if (freeCursor->getFingerID()>maxFingerID) delete freeCursor;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   269
										else freeCursorBuffer.push_back(freeCursor);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   270
									}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   271
									freeCursorList = freeCursorBuffer;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   272
									freeCursorBuffer.clear();
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   273
								}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   274
							}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   275
							else if (deleteCursor->getFingerID()<maxFingerID) freeCursorList.push_back(deleteCursor);
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   276
							break;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   277
						}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   278
					}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   279
				}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   280
				aliveCursorList = cursorBuffer;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   281
				cursorBuffer.clear();
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   282
			}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   283
			else if( strcmp( cmd, "fseq" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   284
			{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   285
				if(currentFrame>0) lastFrame = currentFrame;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   286
				args >> currentFrame  >> EndMessage;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   287
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   288
				if ((currentFrame>=lastFrame) || (currentFrame<0))
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   289
				{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   290
					long currentTime = lastTime;
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   291
					if (currentFrame>lastFrame)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   292
					{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   293
						currentTime = getCurrentTime()-startTime;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   294
						lastTime = currentTime;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   295
					}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   296
					for (std::list<TuioCursor*>::iterator refreshCursor=cursorList.begin(); refreshCursor!=cursorList.end(); refreshCursor++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   297
						if ((*refreshCursor)->getUpdateTime()==TUIO_UNDEFINED) (*refreshCursor)->setUpdateTime(currentTime);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   298
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   299
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   300
						(*listener)->refresh(currentTime);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   301
				}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   302
			}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   303
		}
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   304
		else if( strcmp( msg.AddressPattern(), "/tuio/_siP" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   305
		{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   306
			const char* cmd;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   307
			args >> cmd;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   308
			
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   309
			if( strcmp( cmd, "set" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   310
			{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   311
				if ((currentFrame<lastFrame) && (currentFrame>0)) return;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   312
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   313
				int32 s_id;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   314
				const char* code;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   315
				args >> s_id >> code >> EndMessage;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   316
				std::list<TuioString*>::iterator tstr;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   317
				for (tstr=stringList.begin(); tstr != stringList.end(); tstr++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   318
					if((*tstr)->getSessionID()==(long)s_id) break;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   319
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   320
				if (tstr == stringList.end())
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   321
				{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   322
					int s_id = (int)stringList.size();//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   323
					if ((int)(stringList.size())<=maxStringID)//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   324
					{//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   325
						std::list<TuioString*>::iterator closestString = freeStringList.begin();//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   326
						//Modifi� par alexandre.bastien@iri.centrepompidou.fr
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   327
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   328
						//for(std::list<TuioString*>::iterator testString = freeStringList.begin();testString!= freeStringList.end(); testString++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   329
						//{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   330
							//if((*testString)->getDistance(xpos,ypos,zpos)<(*closestCursor)->getDistance(xpos,ypos,zpos)) closestCursor = testCursor;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   331
						//}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   332
						s_id = (*closestString)->getStringID();//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   333
						freeStringList.erase(closestString);//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   334
						delete *closestString;//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   335
					}//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   336
					else maxStringID = s_id;//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   337
					//Modifi� par alexandre.bastien@iri.centrepompidou.fr
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   338
					TuioString *addString = new TuioString((long)s_id,-1,code);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   339
					stringList.push_back(addString);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   340
					
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   341
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   342
						(*listener)->addTuioString(addString);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   343
					
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   344
				//Modifi� par alexandre.bastien@iri.centrepompidou.fr
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   345
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   346
				else if ( ((*tstr)->getCode()!=code) )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   347
				{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   348
					(*tstr)->update(code);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   349
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   350
						(*listener)->updateTuioString((*tstr));
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   351
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   352
			}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   353
			else if( strcmp( cmd, "alive" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   354
			{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   355
				if ((currentFrame<lastFrame) && (currentFrame>0)) return;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   356
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   357
				int32 s_id;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   358
				while(!args.Eos())
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   359
				{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   360
					args >> s_id;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   361
					stringBuffer.push_back((long)s_id);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   362
					std::list<long>::iterator iter;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   363
					iter = find(aliveStringList.begin(), aliveStringList.end(), (long)s_id); 
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   364
					if (iter != aliveStringList.end()) aliveStringList.erase(iter);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   365
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   366
				args >> EndMessage;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   367
				std::list<long>::iterator alive_iter;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   368
				for (alive_iter=aliveStringList.begin(); alive_iter != aliveStringList.end(); alive_iter++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   369
				{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   370
					std::list<TuioString*>::iterator tstr;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   371
					for (tstr=stringList.begin(); tstr != stringList.end(); tstr++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   372
					{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   373
						TuioString *deleteString = (*tstr);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   374
						if(deleteString->getSessionID()==*alive_iter)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   375
						{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   376
							stringList.erase(tstr);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   377
							deleteString->remove();
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   378
							for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   379
								(*listener)->removeTuioString(deleteString);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   380
							
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   381
							if (deleteString->getStringID()==maxStringID)//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   382
							{//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   383
								maxStringID = -1;//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   384
								delete deleteString;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   385
								
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   386
								if (stringList.size()>0)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   387
								{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   388
									std::list<TuioString*>::iterator clist;//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   389
									for (clist=stringList.begin(); clist != stringList.end(); clist++)//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   390
									{//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   391
										int s_id = (*clist)->getStringID();//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   392
										if (s_id>maxStringID) maxStringID=s_id;//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   393
									}//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   394
									std::list<TuioString*>::iterator flist;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   395
									for (flist=freeStringList.begin(); flist != freeStringList.end(); flist++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   396
									{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   397
										TuioString *freeString = (*flist);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   398
										if (freeString->getStringID()>maxStringID) delete freeString;//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   399
										else freeStringBuffer.push_back(freeString);//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   400
										freeStringBuffer.push_back(freeString);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   401
									}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   402
									freeStringList = freeStringBuffer;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   403
									freeStringBuffer.clear();
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   404
								}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   405
							}//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   406
							else if (deleteString->getStringID()<maxStringID) freeStringList.push_back(deleteString);//
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   407
							break;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   408
						}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   409
					}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   410
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   411
				aliveStringList = stringBuffer;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   412
				stringBuffer.clear();
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   413
			}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   414
			else if( strcmp( cmd, "fseq" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   415
			{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   416
				if(currentFrame>0) lastFrame = currentFrame;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   417
				args >> currentFrame  >> EndMessage;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   418
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   419
				if ((currentFrame>=lastFrame) || (currentFrame<0))
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   420
				{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   421
					long currentTime = lastTime;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   422
					if (currentFrame>lastFrame)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   423
					{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   424
						currentTime = getCurrentTime()-startTime;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   425
						lastTime = currentTime;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   426
					}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   427
					for (std::list<TuioString*>::iterator refreshString=stringList.begin(); refreshString!=stringList.end(); refreshString++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   428
						if ((*refreshString)->getUpdateTime()==TUIO_UNDEFINED) (*refreshString)->setUpdateTime(currentTime);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   429
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   430
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   431
						(*listener)->refresh(currentTime);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   432
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   433
			}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   434
		}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   435
		//Ajout� par alexandre.bastien@iri.centrepompidou.fr
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   436
		/*else if( strcmp( msg.AddressPattern(), "/tuio/_siP" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   437
		{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   438
			const char* cmd;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   439
			args >> cmd;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   440
			
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   441
			if( strcmp( cmd, "set" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   442
			{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   443
				if ((currentFrame<lastFrame) && (currentFrame>0)) return;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   444
				int32 s_id;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   445
				const char* code;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   446
				args >> s_id >> code >> EndMessage;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   447
				std::list<TuioString*>::iterator tstr;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   448
				for (tstr=stringList.begin(); tstr != stringList.end(); tstr++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   449
					if((*tstr)->getSessionID()==(long)s_id) break;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   450
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   451
				if (tstr == stringList.end())
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   452
				{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   453
					TuioString *addString = new TuioString((long)s_id,code);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   454
					stringList.push_back(addString);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   455
					
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   456
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   457
						(*listener)->addTuioString(addString);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   458
					
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   459
					
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   460
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   461
				else if ( ((*tstr)->getCode()!=code) )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   462
				{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   463
					(*tstr)->update(code);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   464
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   465
						(*listener)->updateTuioString((*tstr));
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   466
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   467
			}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   468
			else if( strcmp( cmd, "alive" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   469
			{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   470
				if ((currentFrame<lastFrame) && (currentFrame>0)) return;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   471
					
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   472
				int32 s_id;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   473
				while(!args.Eos())
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   474
				{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   475
					args >> s_id;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   476
					stringBuffer.push_back((long)s_id);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   477
					std::list<long>::iterator iter;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   478
					iter = find(aliveStringList.begin(), aliveStringList.end(), (long)s_id); 
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   479
					if (iter != aliveStringList.end()) aliveStringList.erase(iter);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   480
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   481
				args >> EndMessage;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   482
				
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   483
				std::list<long>::iterator alive_iter;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   484
				for (alive_iter=aliveStringList.begin(); alive_iter != aliveStringList.end(); alive_iter++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   485
				{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   486
					std::list<TuioString*>::iterator tstr;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   487
					for (tstr=stringList.begin(); tstr != stringList.end(); tstr++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   488
					{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   489
						TuioString *deleteString = (*tstr);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   490
						if(deleteString->getSessionID()==*alive_iter)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   491
						{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   492
							stringList.erase(tstr);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   493
							deleteString->remove();
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   494
							for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   495
								(*listener)->removeTuioString(deleteString);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   496
								
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   497
							if (stringList.size()>0)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   498
							{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   499
								std::list<TuioString*>::iterator flist;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   500
								for (flist=freeStringList.begin(); flist != freeStringList.end(); flist++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   501
								{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   502
									TuioString *freeString = (*flist);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   503
								}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   504
								freeStringList = freeStringBuffer;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   505
								freeStringBuffer.clear();
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   506
							}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   507
						}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   508
						break;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   509
					}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   510
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   511
				aliveStringList = stringBuffer;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   512
				stringBuffer.clear();
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   513
			}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   514
			else if( strcmp( cmd, "fseq" ) == 0 )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   515
			{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   516
				if(currentFrame>0) lastFrame = currentFrame;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   517
				args >> currentFrame  >> EndMessage;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   518
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   519
				if ((currentFrame>=lastFrame) || (currentFrame<0))
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   520
				{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   521
					long currentTime = lastTime;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   522
					if (currentFrame>lastFrame)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   523
					{
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   524
						currentTime = getCurrentTime()-startTime;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   525
						lastTime = currentTime;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   526
					}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   527
					
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   528
					for (std::list<TuioString*>::iterator refreshString=stringList.begin(); refreshString!=stringList.end(); refreshString++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   529
						if ((*refreshString)->getUpdateTime()==TUIO_UNDEFINED) (*refreshString)->setUpdateTime(currentTime);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   530
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   531
					for (std::list<TuioListener*>::iterator listener=listenerList.begin(); listener != listenerList.end(); listener++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   532
						(*listener)->refresh(currentTime);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   533
				}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   534
			}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   535
		}*/
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   536
	}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   537
	catch( Exception& e )
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   538
	{
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   539
		std::cout << "error while parsing message: "<< msg.AddressPattern() << ": " << e.what() << "\n";
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   540
	}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   541
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   542
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   543
void TuioClient::ProcessPacket( const char *data, int size, const IpEndpointName& remoteEndpoint ) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   544
	if (listenerList.size()==0) return;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   545
	ReceivedPacket p( data, size );
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   546
	if(p.IsBundle()) ProcessBundle( ReceivedBundle(p), remoteEndpoint);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   547
        else ProcessMessage( ReceivedMessage(p), remoteEndpoint);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   548
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   549
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   550
void TuioClient::start(bool lk) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   551
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   552
	if (socket==NULL) return;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   553
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   554
	locked = lk;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   555
	if (!locked) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   556
		#ifndef WIN32
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   557
		pthread_create(&thread , NULL, ThreadFunc, this);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   558
		#else
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   559
		DWORD threadId;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   560
		thread = CreateThread( 0, 0, ThreadFunc, this, 0, &threadId );
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   561
		#endif
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   562
	} else socket->Run();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   563
	
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   564
	startTime = getCurrentTime();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   565
	lastTime = 0;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   566
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   567
	running = true;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   568
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   569
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   570
void TuioClient::stop() {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   571
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   572
	if (socket==NULL) return;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   573
	socket->Break();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   574
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   575
	if (!locked) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   576
		#ifdef WIN32
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   577
		if( thread ) CloseHandle( thread );
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   578
		#endif
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   579
		thread = 0;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   580
		locked = false;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   581
	}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   582
	running = false;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   583
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   584
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   585
void TuioClient::addTuioListener(TuioListener *listener) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   586
	listenerList.push_back(listener);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   587
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   588
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   589
void TuioClient::removeTuioListener(TuioListener *listener) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   590
	std::list<TuioListener*>::iterator result = find(listenerList.begin(),listenerList.end(),listener);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   591
	if (result!=listenerList.end()) listenerList.remove(listener);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   592
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   593
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   594
TuioObject* TuioClient::getTuioObject(long s_id) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   595
	for (std::list<TuioObject*>::iterator iter=objectList.begin(); iter != objectList.end(); iter++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   596
		if((*iter)->getSessionID()==s_id) return (*iter);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   597
		
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   598
	return NULL;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   599
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   600
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   601
TuioCursor* TuioClient::getTuioCursor(long s_id) {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   602
	for (std::list<TuioCursor*>::iterator iter=cursorList.begin(); iter != cursorList.end(); iter++)
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   603
		if((*iter)->getSessionID()==s_id) return (*iter);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   604
		
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   605
	return NULL;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   606
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   607
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   608
TuioString* TuioClient::getTuioString(long s_id) {
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   609
	for (std::list<TuioString*>::iterator iter=stringList.begin(); iter != stringList.end(); iter++)
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   610
		if((*iter)->getSessionID()==s_id) return (*iter);
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   611
		
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   612
	return NULL;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   613
}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   614
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   615
std::list<TuioObject*> TuioClient::getTuioObjects() {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   616
	return objectList;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   617
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   618
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   619
std::list<TuioCursor*> TuioClient::getTuioCursors() {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   620
	return cursorList;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   621
}
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   622
27
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   623
std::list<TuioString*> TuioClient::getTuioStrings() {
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   624
	return stringList;
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   625
}
6c08d4d7219e Middleware :
bastiena
parents: 25
diff changeset
   626
21
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   627
long TuioClient::getCurrentTime() {
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   628
	
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   629
	#ifdef WIN32
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   630
		long timestamp = GetTickCount();
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   631
	#else
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   632
		struct timeval tv;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   633
		struct timezone tz;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   634
		gettimeofday(&tv,&tz);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   635
		long timestamp = (tv.tv_sec*1000)+(tv.tv_usec/1000);
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   636
	#endif
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   637
		
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   638
		return timestamp;
e4e5f02787a1 Front IDILL :
bastiena
parents:
diff changeset
   639
}