public void onFrame(Controller controller) { currentFrame = controller.frame(); boolean handsFlipped = false; for (int i = 0; i < 2; i++) { currentHand = currentFrame.hands().get(i); if (currentHand.isValid()) { for (int n = 0; n < 2; n++) { if (currentHand.id() == handIds[n] && n != i) handsFlipped = true; } int num = i; if (handsFlipped) num = ((num == 0) ? 1 : 0); hands[num] = currentHand; handIds[num] = currentHand.id(); if (!currentHand.tools().empty()) { tools[num] = currentHand.tools().get(0); } FingerList fings = currentHand.fingers(); if (fings.count() >= 3) handOpen[num] = true; else handOpen[num] = false; for (int f = 0; f < 5; f++) { if (f < fings.count()) { Finger finger = fings.get(f); fingers[f + (5 * num)] = finger; } else fingers[f + (5 * num)] = new Finger(); } } else { int num = i; if (handsFlipped) num = ((num == 0) ? 1 : 0); hands[num] = new Hand(); handOpen[num] = false; } } if (isConnected) { data = new StringBuilder(); for (int i = 0; i < hands.length; i++) { if (OS.contains("Linux")) { data.append(HAND_NAMES[i] + "-x " + Math.round(hands[i].palmPosition().getX()) + "\n"); data.append( HAND_NAMES[i] + "-y " + Math.round((hands[i].palmPosition().getY() - 220) * 1.6) + "\n"); data.append(HAND_NAMES[i] + "-z " + Math.round(hands[i].palmPosition().getZ()) + "\n"); } else { data.append( HAND_NAMES[i] + "-x " + Math.round(hands[i].stabilizedPalmPosition().getX()) + "\n"); data.append( HAND_NAMES[i] + "-y " + Math.round((hands[i].stabilizedPalmPosition().getY() - 220) * 1.6) + "\n"); data.append( HAND_NAMES[i] + "-z " + Math.round(hands[i].stabilizedPalmPosition().getZ()) + "\n"); } data.append(HAND_NAMES[i] + "-visible " + hands[i].isValid() + "\n"); data.append(HAND_NAMES[i] + "-open " + handOpen[i] + "\n"); } for (int i = 0; i < fingers.length; i++) { data.append( FINGER_NAMES[i] + "-x " + Math.round(fingers[i].stabilizedTipPosition().getX()) + "\n"); data.append( FINGER_NAMES[i] + "-y " + Math.round((fingers[i].stabilizedTipPosition().getY() - 220) * 1.6) + "\n"); data.append( FINGER_NAMES[i] + "-z " + Math.round(fingers[i].stabilizedTipPosition().getZ()) + "\n"); data.append(FINGER_NAMES[i] + "-visible " + fingers[i].isValid() + "\n"); } for (int i = 0; i < tools.length; i++) { data.append( TOOL_NAMES[i] + "-x " + Math.round(tools[i].stabilizedTipPosition().getX()) + "\n"); data.append( TOOL_NAMES[i] + "-y " + Math.round((tools[i].stabilizedTipPosition().getY() - 220) * 1.6) + "\n"); data.append( TOOL_NAMES[i] + "-z " + Math.round(tools[i].stabilizedTipPosition().getZ()) + "\n"); data.append(TOOL_NAMES[i] + "-visible " + tools[i].isValid() + "\n"); } } }