Example #1
0
 /// <summary>
 /// Processes a skeleton frame from the Kinect controller
 /// </summary>
 /// <param name="frame">The skeleton frame to process</param>
 public void ProcessSkeleton(SkeletonData skeleton)
 {
     if (activeGesture != null)
     {
         if (activeGesture.IsComplete(skeleton))
         {
             if (GestureCompleted != null)
             {
                 GestureCompleted.Invoke(this, new GestureEventArgs(activeGesture));
             }
             activeGesture.Deactivate();
             activeGesture = null;
         }
         else if (activeGesture.IsOut(skeleton))
         {
             if (GestureLeft != null)
             {
                 GestureLeft.Invoke(this, new GestureEventArgs(activeGesture));
             }
             activeGesture.Deactivate();
             activeGesture = null;
         }
     }
     if (activeGesture == null)
     {
         double maxScore = 0;
         IGesture maxGesture = null;
         foreach (IGesture gesture in gestures)
         {
             double score = gesture.GetTriggerScore(skeleton);
             if (score > Math.Max(maxScore, THRESHOLD))
             {
                 maxScore = score;
                 maxGesture = gesture;
             }
         }
         if (maxGesture != null)
         {
             activeGesture = maxGesture;
             if (GestureStarted != null)
             {
                 GestureStarted.Invoke(this, new GestureEventArgs(activeGesture));
             }
             activeGesture.Activate();
         }
     }
 }