void Update() { KinectManager kinectManager = KinectManager.Instance; // update Kinect interaction if (kinectManager && kinectManager.IsInitialized()) { List <Int64> aluserIds = kinectManager.GetAlUserIds(); while (leftHandState.Count < aluserIds.Count) { leftHandEvent.Add(HandEventType.None); lastLeftHandEvent.Add(HandEventType.None); rightHandEvent.Add(HandEventType.None); lastRightHandEvent.Add(HandEventType.None); leftHandState.Add(KinectInterop.HandState.Unknown); rightHandState.Add(KinectInterop.HandState.Unknown); } for (int userIndex = 0; userIndex < aluserIds.Count; userIndex++) { if (aluserIds[userIndex] != 0) // User found { HandEventType handEvent = HandEventType.None; // get the left hand state leftHandState[userIndex] = kinectManager.GetLeftHandState(aluserIds[userIndex]); // get the right hand state rightHandState[userIndex] = kinectManager.GetRightHandState(aluserIds[userIndex]); // process left hand handEvent = HandStateToEvent(leftHandState[userIndex], lastLeftHandEvent[userIndex]); leftHandEvent[userIndex] = handEvent; if (handEvent != HandEventType.None) { lastLeftHandEvent[userIndex] = handEvent; } // process right hand handEvent = HandStateToEvent(rightHandState[userIndex], lastRightHandEvent[userIndex]); rightHandEvent[userIndex] = handEvent; if (handEvent != HandEventType.None) { lastRightHandEvent[userIndex] = handEvent; } } else // User not found { leftHandState[userIndex] = KinectInterop.HandState.NotTracked; rightHandState[userIndex] = KinectInterop.HandState.NotTracked; leftHandEvent[userIndex] = HandEventType.None; rightHandEvent[userIndex] = HandEventType.None; lastLeftHandEvent[userIndex] = HandEventType.Release; lastRightHandEvent[userIndex] = HandEventType.Release; } } } }