public void RecordRecognizedGesture(RecognizedGesture gestureReco)
        {
            if (gestureReco == null)
                throw new ArgumentNullException("gestureReco");

            if (!recognizedGestures.Contains(gestureReco))
                recognizedGestures.Add(gestureReco);
        }
 public void RecordSingleRecognizedGesture(RecognizedGestureEventHandler actionDelegate, params SimpleGesture[] gestures)
 {
     if (actionDelegate != null)
     {
         var gestureReco = new RecognizedGesture(gestures);
         gestureReco.Activated += delegate(object sender, RecognizedGestureEventArgs e)
         {
             actionDelegate(sender, e);
         };
         RecordRecognizedGesture(gestureReco);
     }
 }
        private double ComputeGestureScore(DateTime now, BlobGestureFollower follower, RecognizedGesture desiredGesture)
        {
            var sequence = follower.Sequence;

            if ((now - sequence.LastModificationTime) >= gestureDetectionLatency)
            {
                var machine = desiredGesture.Machine;
                if (sequence.Count >= machine.Descriptor.Count)
                {
                    machine.Reset();

                    for (int i = 0; i < sequence.Count && !machine.Valid; i++)
                    {
                        var gesture = sequence[sequence.Count - i - 1];
                        if (gesture != null)
                        {
                            machine.Update(gesture.Gesture);
                        }
                    }

                    return machine.Valid ? machine.Score : 0;
                }
                else
                    return 0;
            }
            else
                return 0;
        }