protected Vector3D getCurrentJointValue(uint targetID, FubiUtils.SkeletonJoint jointID, FubiUtils.BodyMeasurement measureID = FubiUtils.BodyMeasurement.NUM_MEASUREMENTS) { float x, y, z, confidence; double timeStamp; if (Type == XMLGenerator.RecognizerType.JointRelation || Type == XMLGenerator.RecognizerType.LinearMovement) { if (UseHand) { Fubi.getCurrentHandJointPosition(targetID, (FubiUtils.SkeletonHandJoint)jointID, out x, out y, out z, out confidence, out timeStamp, Options.Local, Options.Filtered); } else { Fubi.getCurrentSkeletonJointPosition(targetID, jointID, out x, out y, out z, out confidence, out timeStamp, Options.Local, Options.Filtered); if (measureID != FubiUtils.BodyMeasurement.NUM_MEASUREMENTS && Type == XMLGenerator.RecognizerType.JointRelation) { float measureDist, measureConfidence; Fubi.getBodyMeasurementDistance(targetID, measureID, out measureDist, out measureConfidence); if (measureDist > 0) { x /= measureDist; y /= measureDist; z /= measureDist; } } } } else { var mat = new float[9]; if (UseHand) { Fubi.getCurrentHandJointOrientation(targetID, (FubiUtils.SkeletonHandJoint)jointID, mat, out confidence, out timeStamp, Options.Local, Options.Filtered); } else { Fubi.getCurrentSkeletonJointOrientation(targetID, jointID, mat, out confidence, out timeStamp, Options.Local, Options.Filtered); } FubiUtils.Math.rotMatToRotation(mat, out x, out y, out z); } return(new Vector3D(x, y, z)); }