public void newCursor(TuioCursor cursor) { ibheTuioEvent newEvent = new ibheTuioEvent(cursor.getSessionID()); newEvent.tuioPosition = new Vector2(cursor.getX(), (1.0f - cursor.getY())); //switching y and z (y is up axis by default in unity) newEvent.screenPosition = new Vector3(cursor.getX() * cameraPixelWidth, 0, (1.0f - cursor.getY()) * cameraPixelHeight); newEvent.lastScreenPosition = newEvent.screenPosition; newEvent.eventState = mtEventState.Began; newEvent.xPos = cursor.getHXpos() * cameraPixelWidth; newEvent.yPos = (1.0f - cursor.getHYpos()) * cameraPixelHeight; newEvent.width = cursor.getWidth(); newEvent.height = cursor.getHeight(); if (cursor.getHeightPoints() != null) { newEvent.heights = cursor.getHeightPoints().ToArray(); } float min = 250.0F; for (int i = 0; i < newEvent.heights.Length; i++) { if (((newEvent.heights[i] / 255.0F) * -4.0F) < min) { min = (newEvent.heights[i] / 255.0F) * -4.0F; } } newEvent.minHeight = min; if (activeEvents.ContainsKey(cursor.getSessionID())) { //Already on list, remove old - add new activeEvents.Remove(cursor.getSessionID()); } activeEvents.Add(cursor.getSessionID(), newEvent); // queue it up for processing lock (eventQueueLock) eventQueue.Add(newEvent); didChange = true; }
public void updateCursor(TuioCursor cursor) { if (!activeEvents.ContainsKey(cursor.getSessionID())) { return; } ibheTuioEvent anEvent = activeEvents[cursor.getSessionID()]; anEvent.lastScreenPosition = anEvent.screenPosition; anEvent.screenPosition = new Vector3(cursor.getX() * cameraPixelWidth, 0, (1.0f - cursor.getY()) * cameraPixelHeight); anEvent.tuioPosition = new Vector2(cursor.getX(), (1.0f - cursor.getY())); anEvent.eventState = mtEventState.Moved; anEvent.xPos = cursor.getHXpos() * cameraPixelWidth; anEvent.yPos = (1.0f - cursor.getHYpos()) * cameraPixelHeight; anEvent.width = cursor.getWidth(); anEvent.height = cursor.getHeight(); if (cursor.getHeightPoints() != null) { anEvent.heights = cursor.getHeightPoints().ToArray(); } float min = 250.0F; for (int i = 0; i < anEvent.heights.Length; i++) { if (((anEvent.heights[i] / 255.0F) * -4.0F) < min) { min = (anEvent.heights[i] / 255.0F) * -4.0F; } } anEvent.minHeight = min; //calibrate //Matrix mat = Matrix.Translate(xTCalib, yTCalib, 0.0F); //anEvent.xPos = mat.TransformVector( anEvent.xPos ); lock (eventQueueLock) eventQueue.Add(anEvent); didChange = true; }