front_processing/extern/TUIO_JAVA/src/TUIO/TuioClient.java
author bastiena
Fri, 09 Mar 2012 14:52:11 +0100
changeset 0 6fefd4afe506
child 3 92f19af39024
permissions -rw-r--r--
First Import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     1
/*
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     2
	TUIO Java backend - part of the reacTIVision project
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     3
	http://reactivision.sourceforge.net/
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     4
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     5
	Copyright (c) 2005-2009 Martin Kaltenbrunner <mkalten@iua.upf.edu>
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     6
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     7
    This program is free software; you can redistribute it and/or modify
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     8
    it under the terms of the GNU General Public License as published by
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     9
    the Free Software Foundation; either version 2 of the License, or
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    10
    (at your option) any later version.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    11
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    12
    This program is distributed in the hope that it will be useful,
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    13
    but WITHOUT ANY WARRANTY; without even the implied warranty of
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    14
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    15
    GNU General Public License for more details.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    16
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    17
    You should have received a copy of the GNU General Public License
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    18
    along with this program; if not, write to the Free Software
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    19
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    20
*/
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    21
package TUIO;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    22
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    23
import com.illposed.osc.*;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    24
import java.util.*;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    25
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    26
/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    27
 * The TuioClient class is the central TUIO protocol decoder component. It provides a simple callback infrastructure using the {@link TuioListener} interface.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    28
 * In order to receive and decode TUIO messages an instance of TuioClient needs to be created. The TuioClient instance then generates TUIO events
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    29
 * which are broadcasted to all registered classes that implement the {@link TuioListener} interface.<P> 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    30
 * <code>
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    31
 * TuioClient client = new TuioClient();<br/>
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    32
 * client.addTuioListener(myTuioListener);<br/>
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    33
 * client.connect();<br/>
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    34
 * </code>
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    35
 *
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    36
 * @author Martin Kaltenbrunner
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    37
 * @version 1.4
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    38
 */ 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    39
public class TuioClient implements OSCListener {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    40
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    41
	private int port = 3333;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    42
	private OSCPortIn oscPort;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    43
	private boolean connected = false;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    44
	private Hashtable<Long,TuioObject> objectList = new Hashtable<Long,TuioObject>();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    45
	private Vector<Long> aliveObjectList = new Vector<Long>();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    46
	private Vector<Long> newObjectList = new Vector<Long>();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    47
	private Hashtable<Long,TuioCursor> cursorList = new Hashtable<Long,TuioCursor>();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    48
	private Vector<Long> aliveCursorList = new Vector<Long>();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    49
	private Vector<Long> newCursorList = new Vector<Long>();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    50
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    51
	private Vector<TuioObject> frameObjects = new Vector<TuioObject>();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    52
	private Vector<TuioCursor> frameCursors = new Vector<TuioCursor>();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    53
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    54
	private Vector<TuioCursor> freeCursorList = new Vector<TuioCursor>();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    55
	private int maxCursorID = -1;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    56
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    57
	private long currentFrame = 0;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    58
	private TuioTime currentTime;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    59
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    60
	private Vector<TuioListener> listenerList = new Vector<TuioListener>();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    61
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    62
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    63
	 * The default constructor creates a client that listens to the default TUIO port 3333
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    64
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    65
	public TuioClient() {}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    66
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    67
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    68
	 * This constructor creates a client that listens to the provided port
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    69
	 *
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    70
	 * @param  port  the listening port number
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    71
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    72
	public TuioClient(int port) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    73
		this.port = port;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    74
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    75
		
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    76
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    77
	 * The TuioClient starts listening to TUIO messages on the configured UDP port
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    78
	 * All reveived TUIO messages are decoded and the resulting TUIO events are broadcasted to all registered TuioListeners
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    79
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    80
	public void connect() {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    81
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    82
		TuioTime.initSession();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    83
		currentTime = new TuioTime();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    84
		currentTime.reset();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    85
		
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    86
		try {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    87
			oscPort = new OSCPortIn(port);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    88
			oscPort.addListener("/tuio/2Dobj",this);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    89
			oscPort.addListener("/tuio/2Dcur",this);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    90
			oscPort.startListening();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    91
			connected = true;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    92
		} catch (Exception e) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    93
			System.out.println("TuioClient: failed to connect to port "+port);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    94
			connected = false;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    95
		}		
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    96
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    97
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    98
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    99
	 * The TuioClient stops listening to TUIO messages on the configured UDP port
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   100
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   101
	public void disconnect() {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   102
		oscPort.stopListening();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   103
		try { Thread.sleep(100); }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   104
		catch (Exception e) {};
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   105
		oscPort.close();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   106
		connected = false;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   107
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   108
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   109
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   110
	 * Returns true if this TuioClient is currently connected.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   111
	 * @return	true if this TuioClient is currently connected
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   112
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   113
	public boolean isConnected() { return connected; }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   114
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   115
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   116
	 * Adds the provided TuioListener to the list of registered TUIO event listeners
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   117
	 *
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   118
	 * @param  listener  the TuioListener to add
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   119
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   120
	public void addTuioListener(TuioListener listener) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   121
		listenerList.addElement(listener);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   122
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   123
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   124
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   125
	 * Removes the provided TuioListener from the list of registered TUIO event listeners
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   126
	 *
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   127
	 * @param  listener  the TuioListener to remove
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   128
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   129
	public void removeTuioListener(TuioListener listener) {	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   130
		listenerList.removeElement(listener);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   131
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   132
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   133
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   134
	 * Removes all TuioListener from the list of registered TUIO event listeners
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   135
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   136
	public void removeAllTuioListeners() {	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   137
		listenerList.clear();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   138
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   139
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   140
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   141
	 * Returns a Vector of all currently active TuioObjects
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   142
	 *
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   143
	 * @return  a Vector of all currently active TuioObjects
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   144
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   145
	public Vector<TuioObject> getTuioObjects() {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   146
		return new Vector<TuioObject>(objectList.values());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   147
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   148
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   149
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   150
	 * Returns a Vector of all currently active TuioCursors
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   151
	 *
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   152
	 * @return  a Vector of all currently active TuioCursors
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   153
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   154
	public Vector<TuioCursor> getTuioCursors() {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   155
		return new Vector<TuioCursor>(cursorList.values());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   156
	}	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   157
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   158
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   159
	 * Returns the TuioObject corresponding to the provided Session ID
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   160
	 * or NULL if the Session ID does not refer to an active TuioObject
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   161
	 *
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   162
	 * @return  an active TuioObject corresponding to the provided Session ID or NULL
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   163
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   164
	public TuioObject getTuioObject(long s_id) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   165
		return objectList.get(s_id);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   166
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   167
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   168
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   169
	 * Returns the TuioCursor corresponding to the provided Session ID
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   170
	 * or NULL if the Session ID does not refer to an active TuioCursor
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   171
	 *
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   172
	 * @return  an active TuioCursor corresponding to the provided Session ID or NULL
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   173
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   174
	public TuioCursor getTuioCursor(long s_id) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   175
		return cursorList.get(s_id);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   176
	}	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   177
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   178
	/**
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   179
	 * The OSC callback method where all TUIO messages are received and decoded
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   180
	 * and where the TUIO event callbacks are dispatched
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   181
	 *
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   182
	 * @param  date	the time stamp of the OSC bundle
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   183
	 * @param  message	the received OSC message
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   184
	 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   185
	public void acceptMessage(Date date, OSCMessage message) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   186
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   187
		Object[] args = message.getArguments();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   188
		String command = (String)args[0];
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   189
		String address = message.getAddress();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   190
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   191
		if (address.equals("/tuio/2Dobj")) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   192
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   193
			if (command.equals("set")) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   194
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   195
				long s_id  = ((Integer)args[1]).longValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   196
				int c_id  = ((Integer)args[2]).intValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   197
				float xpos = ((Float)args[3]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   198
				float ypos = ((Float)args[4]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   199
				float angle = ((Float)args[5]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   200
				float xspeed = ((Float)args[6]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   201
				float yspeed = ((Float)args[7]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   202
				float rspeed = ((Float)args[8]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   203
				float maccel = ((Float)args[9]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   204
				float raccel = ((Float)args[10]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   205
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   206
				if (objectList.get(s_id) == null) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   207
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   208
					TuioObject addObject = new TuioObject(s_id,c_id,xpos,ypos,angle);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   209
					frameObjects.addElement(addObject);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   210
					
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   211
				} else {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   212
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   213
					TuioObject tobj = objectList.get(s_id);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   214
					if (tobj==null) return;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   215
					if ((tobj.xpos!=xpos) || (tobj.ypos!=ypos) || (tobj.angle!=angle) || (tobj.x_speed!=xspeed) || (tobj.y_speed!=yspeed) || (tobj.rotation_speed!=rspeed) || (tobj.motion_accel!=maccel) || (tobj.rotation_accel!=raccel)) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   216
						
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   217
						TuioObject updateObject = new TuioObject(s_id,c_id,xpos,ypos,angle);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   218
						updateObject.update(xpos,ypos,angle,xspeed,yspeed,rspeed,maccel,raccel);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   219
						frameObjects.addElement(updateObject);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   220
					}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   221
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   222
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   223
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   224
			} else if (command.equals("alive")) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   225
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   226
				newObjectList.clear();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   227
				for (int i=1;i<args.length;i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   228
					// get the message content
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   229
					long s_id = ((Integer)args[i]).longValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   230
					newObjectList.addElement(s_id);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   231
					// reduce the object list to the lost objects
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   232
					if (aliveObjectList.contains(s_id))
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   233
						 aliveObjectList.removeElement(s_id);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   234
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   235
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   236
				// remove the remaining objects
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   237
				for (int i=0;i<aliveObjectList.size();i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   238
					TuioObject removeObject = objectList.get(aliveObjectList.elementAt(i));
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   239
					if (removeObject==null) continue;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   240
					removeObject.remove(currentTime);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   241
					frameObjects.addElement(removeObject);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   242
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   243
					
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   244
			} else if (command.equals("fseq")) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   245
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   246
				long fseq = ((Integer)args[1]).longValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   247
				boolean lateFrame = false;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   248
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   249
				if (fseq>0) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   250
					if (fseq>currentFrame) currentTime = TuioTime.getSessionTime();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   251
					if ((fseq>=currentFrame) || ((currentFrame-fseq)>100)) currentFrame=fseq;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   252
					else lateFrame = true;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   253
				} else if (TuioTime.getSessionTime().subtract(currentTime).getTotalMilliseconds()>100) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   254
					currentTime = TuioTime.getSessionTime();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   255
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   256
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   257
				if (!lateFrame) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   258
					Enumeration<TuioObject> frameEnum = frameObjects.elements();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   259
					while(frameEnum.hasMoreElements()) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   260
						TuioObject tobj = frameEnum.nextElement();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   261
						
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   262
						switch (tobj.getTuioState()) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   263
							case TuioObject.TUIO_REMOVED:
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   264
								TuioObject removeObject = tobj;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   265
								removeObject.remove(currentTime);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   266
								for (int i=0;i<listenerList.size();i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   267
									TuioListener listener = (TuioListener)listenerList.elementAt(i);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   268
									if (listener!=null) listener.removeTuioObject(removeObject);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   269
								}								
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   270
								objectList.remove(removeObject.getSessionID());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   271
								break;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   272
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   273
							case TuioObject.TUIO_ADDED:
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   274
								TuioObject addObject = new TuioObject(currentTime,tobj.getSessionID(),tobj.getSymbolID(),tobj.getX(),tobj.getY(),tobj.getAngle());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   275
								objectList.put(addObject.getSessionID(),addObject);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   276
								for (int i=0;i<listenerList.size();i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   277
									TuioListener listener = (TuioListener)listenerList.elementAt(i);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   278
									if (listener!=null) listener.addTuioObject(addObject);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   279
								}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   280
								break;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   281
																
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   282
							default:
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   283
								TuioObject updateObject = objectList.get(tobj.getSessionID());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   284
								if ( (tobj.getX()!=updateObject.getX() && tobj.getXSpeed()==0) || (tobj.getY()!=updateObject.getY() && tobj.getYSpeed()==0) )
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   285
									updateObject.update(currentTime,tobj.getX(),tobj.getY(),tobj.getAngle());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   286
								else
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   287
									updateObject.update(currentTime,tobj.getX(),tobj.getY(),tobj.getAngle(),tobj.getXSpeed(),tobj.getYSpeed(),tobj.getRotationSpeed(),tobj.getMotionAccel(),tobj.getRotationAccel());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   288
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   289
								for (int i=0;i<listenerList.size();i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   290
									TuioListener listener = (TuioListener)listenerList.elementAt(i);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   291
									if (listener!=null) listener.updateTuioObject(updateObject);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   292
								}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   293
						}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   294
					}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   295
					
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   296
					for (int i=0;i<listenerList.size();i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   297
						TuioListener listener = (TuioListener)listenerList.elementAt(i);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   298
						if (listener!=null) listener.refresh(new TuioTime(currentTime));
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   299
					}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   300
					
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   301
					Vector<Long> buffer = aliveObjectList;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   302
					aliveObjectList = newObjectList;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   303
					// recycling the vector
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   304
					newObjectList = buffer;					
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   305
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   306
				frameObjects.clear();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   307
			}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   308
		} else if (address.equals("/tuio/2Dcur")) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   309
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   310
			if (command.equals("set")) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   311
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   312
				long s_id  = ((Integer)args[1]).longValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   313
				float xpos = ((Float)args[2]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   314
				float ypos = ((Float)args[3]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   315
				float xspeed = ((Float)args[4]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   316
				float yspeed = ((Float)args[5]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   317
				float maccel = ((Float)args[6]).floatValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   318
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   319
				if (cursorList.get(s_id) == null) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   320
									
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   321
					TuioCursor addCursor = new TuioCursor(s_id, -1 ,xpos,ypos);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   322
					frameCursors.addElement(addCursor);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   323
					
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   324
				} else {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   325
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   326
					TuioCursor tcur = cursorList.get(s_id);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   327
					if (tcur==null) return;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   328
					if ((tcur.xpos!=xpos) || (tcur.ypos!=ypos) || (tcur.x_speed!=xspeed) || (tcur.y_speed!=yspeed) || (tcur.motion_accel!=maccel)) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   329
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   330
						TuioCursor updateCursor = new TuioCursor(s_id,tcur.getCursorID(),xpos,ypos);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   331
						updateCursor.update(xpos,ypos,xspeed,yspeed,maccel);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   332
						frameCursors.addElement(updateCursor);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   333
					}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   334
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   335
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   336
				//System.out.println("set cur " + s_id+" "+xpos+" "+ypos+" "+xspeed+" "+yspeed+" "+maccel);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   337
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   338
			} else if (command.equals("alive")) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   339
	
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   340
				newCursorList.clear();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   341
				for (int i=1;i<args.length;i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   342
					// get the message content
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   343
					long s_id = ((Integer)args[i]).longValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   344
					newCursorList.addElement(s_id);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   345
					// reduce the cursor list to the lost cursors
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   346
					if (aliveCursorList.contains(s_id)) 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   347
						aliveCursorList.removeElement(s_id);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   348
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   349
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   350
				// remove the remaining cursors
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   351
				for (int i=0;i<aliveCursorList.size();i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   352
					TuioCursor removeCursor = cursorList.get(aliveCursorList.elementAt(i));
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   353
					if (removeCursor==null) continue;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   354
					removeCursor.remove(currentTime);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   355
					frameCursors.addElement(removeCursor);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   356
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   357
								
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   358
			} else if (command.equals("fseq")) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   359
				long fseq = ((Integer)args[1]).longValue();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   360
				boolean lateFrame = false;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   361
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   362
				if (fseq>0) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   363
					if (fseq>currentFrame) currentTime = TuioTime.getSessionTime();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   364
					if ((fseq>=currentFrame) || ((currentFrame-fseq)>100)) currentFrame = fseq;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   365
					else lateFrame = true;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   366
				} else if (TuioTime.getSessionTime().subtract(currentTime).getTotalMilliseconds()>100) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   367
					currentTime = TuioTime.getSessionTime();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   368
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   369
				if (!lateFrame) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   370
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   371
					Enumeration<TuioCursor> frameEnum = frameCursors.elements();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   372
					while(frameEnum.hasMoreElements()) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   373
						TuioCursor tcur = frameEnum.nextElement();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   374
						
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   375
						switch (tcur.getTuioState()) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   376
							case TuioCursor.TUIO_REMOVED:
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   377
							
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   378
								TuioCursor removeCursor = tcur;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   379
								removeCursor.remove(currentTime);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   380
								
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   381
								for (int i=0;i<listenerList.size();i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   382
									TuioListener listener = (TuioListener)listenerList.elementAt(i);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   383
									if (listener!=null) listener.removeTuioCursor(removeCursor);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   384
								}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   385
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   386
								cursorList.remove(removeCursor.getSessionID());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   387
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   388
								if (removeCursor.getCursorID()==maxCursorID) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   389
									maxCursorID = -1;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   390
									if (cursorList.size()>0) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   391
										Enumeration<TuioCursor> clist = cursorList.elements();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   392
										while (clist.hasMoreElements()) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   393
											int c_id = clist.nextElement().getCursorID();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   394
											if (c_id>maxCursorID) maxCursorID=c_id;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   395
										}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   396
										
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   397
										Enumeration<TuioCursor> flist = freeCursorList.elements();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   398
										while (flist.hasMoreElements()) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   399
											int c_id = flist.nextElement().getCursorID();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   400
											if (c_id>=maxCursorID) freeCursorList.removeElement(c_id);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   401
										}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   402
									} else freeCursorList.clear();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   403
								} else if (removeCursor.getCursorID()<maxCursorID) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   404
									freeCursorList.addElement(removeCursor);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   405
								}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   406
								
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   407
								break;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   408
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   409
							case TuioCursor.TUIO_ADDED:
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   410
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   411
								int c_id = cursorList.size();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   412
								if ((cursorList.size()<=maxCursorID) && (freeCursorList.size()>0)) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   413
									TuioCursor closestCursor = freeCursorList.firstElement();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   414
									Enumeration<TuioCursor> testList = freeCursorList.elements();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   415
									while (testList.hasMoreElements()) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   416
										TuioCursor testCursor = testList.nextElement();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   417
										if (testCursor.getDistance(tcur)<closestCursor.getDistance(tcur)) closestCursor = testCursor;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   418
									}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   419
									c_id = closestCursor.getCursorID();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   420
									freeCursorList.removeElement(closestCursor);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   421
								} else maxCursorID = c_id;		
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   422
								
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   423
								TuioCursor addCursor = new TuioCursor(currentTime,tcur.getSessionID(),c_id,tcur.getX(),tcur.getY());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   424
								cursorList.put(addCursor.getSessionID(),addCursor);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   425
								
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   426
								for (int i=0;i<listenerList.size();i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   427
									TuioListener listener = (TuioListener)listenerList.elementAt(i);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   428
									if (listener!=null) listener.addTuioCursor(addCursor);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   429
								}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   430
								break;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   431
								
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   432
							default:
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   433
								
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   434
								TuioCursor updateCursor = cursorList.get(tcur.getSessionID());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   435
								if ( (tcur.getX()!=updateCursor.getX() && tcur.getXSpeed()==0) || (tcur.getY()!=updateCursor.getY() && tcur.getYSpeed()==0) )
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   436
									updateCursor.update(currentTime,tcur.getX(),tcur.getY());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   437
								else 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   438
									updateCursor.update(currentTime,tcur.getX(),tcur.getY(),tcur.getXSpeed(),tcur.getYSpeed(),tcur.getMotionAccel());
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   439
									
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   440
								for (int i=0;i<listenerList.size();i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   441
									TuioListener listener = (TuioListener)listenerList.elementAt(i);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   442
									if (listener!=null) listener.updateTuioCursor(updateCursor);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   443
								}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   444
						}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   445
					}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   446
					
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   447
					for (int i=0;i<listenerList.size();i++) {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   448
						TuioListener listener = (TuioListener)listenerList.elementAt(i);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   449
						if (listener!=null) listener.refresh(new TuioTime(currentTime));
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   450
					}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   451
					
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   452
					Vector<Long> buffer = aliveCursorList;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   453
					aliveCursorList = newCursorList;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   454
					// recycling the vector
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   455
					newCursorList = buffer;				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   456
				}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   457
				
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   458
				frameCursors.clear();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   459
			} 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   460
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   461
		}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   462
	}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   463
}