/// <summary>
        /// Handles gesture detection results arriving from the sensor for the associated body tracking Id
        /// </summary>
        /// <param name="sender">object sending the event</param>
        /// <param name="e">event arguments</param>
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    // get the discrete gesture results which arrived with the latest frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult> discreteResults = frame.DiscreteGestureResults;

                    if (discreteResults != null)
                    {
                        // we only have one gesture in this source object, but you can get multiple gestures
                        foreach (Gesture gesture in this.vgbFrameSource.Gestures)
                        {
                            if (gesture.GestureType == GestureType.Discrete)
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);

                                if (result != null)
                                {
                                    if (gesture.Name.Equals(this.ASLStandGestureName))
                                    {
                                        GestureResultView.UpdateGestureResult(true, gesture.Name, result.Detected, result.Confidence);
                                    }
                                    else if (gesture.Name.Equals(this.ASLWalkGestureName))
                                    {
                                        GestureResultView.UpdateGestureResult(true, gesture.Name, result.Detected, result.Confidence);
                                    }
                                    else if (gesture.Name.Equals(this.ASLTurnLeftGestureName))
                                    {
                                        GestureResultView.UpdateGestureResult(true, gesture.Name, result.Detected, result.Confidence);
                                    }
                                    else if (gesture.Name.Equals(this.ASLTurnRightGestureName))
                                    {
                                        GestureResultView.UpdateGestureResult(true, gesture.Name, result.Detected, result.Confidence);
                                    }
                                    else if (gesture.Name.Equals(this.ASLTurnLeftGestureName))
                                    {
                                        GestureResultView.UpdateGestureResult(true, gesture.Name, result.Detected, result.Confidence);
                                    }
                                    else if (gesture.Name.Equals(this.ASLSitGestureName))
                                    {
                                        GestureResultView.UpdateGestureResult(true, gesture.Name, result.Detected, result.Confidence);
                                    }
                                    else if (gesture.Name.Equals(this.ASLStopGestureName))
                                    {
                                        GestureResultView.UpdateGestureResult(true, gesture.Name, result.Detected, result.Confidence);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
 // Handle the TrackingIdLost event for the VisualGestureBuilderSource object
 private void Source_TrackingIdLost(object sender, TrackingIdLostEventArgs e)
 {
     // Update the GestureResultView object to show the 'Not Tracked' image in the UI
     GestureResultView.UpdateGestureResult(false, false, false, false, false, false, false, 0.0f);
 }
        /// <summary>
        /// Handles gesture detection results arriving from the sensor for the associated body tracking Id
        /// </summary>
        /// <param name="sender">object sending the event</param>
        /// <param name="e">event arguments</param>
        ///

        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (VisualGestureBuilderFrame frame = frameReference.AcquireFrame())
            {
                bool isGestureDetected = false;
                bool iscrouched        = false;
                bool isdabbing         = false;
                bool isheying          = false;
                bool isholding         = false;
                bool isreloading       = false;

                float level = 0;

                if (frame != null)
                {
                    // get the discrete gesture results which arrived with the latest frame
                    IReadOnlyDictionary <Gesture, DiscreteGestureResult>   discreteResults   = frame.DiscreteGestureResults;
                    IReadOnlyDictionary <Gesture, ContinuousGestureResult> continuousResults = frame.ContinuousGestureResults;

                    if (discreteResults != null)
                    {
                    }
                    if (continuousResults != null)
                    {
                        foreach (Gesture gesture in vgbFrameSource.Gestures)
                        {
                            if (gesture.Name.Equals(this.crouch_gesture) ||
                                gesture.Name.Equals(this.dab_gesture) ||
                                gesture.Name.Equals(this.hey_gesture) ||
                                gesture.Name.Equals(this.hold_gesture) ||
                                gesture.Name.Equals(this.reload_gesture))
                            {
                                {
                                    ContinuousGestureResult result = null;
                                    continuousResults.TryGetValue(gesture, out result);

                                    if (result != null)
                                    {
                                        level = result.Progress;
                                        if (level >= 0.8)
                                        {
                                            hysterisis++;
                                            if (hysterisis != 20)
                                            {
                                                return;
                                            }
                                            hysterisis = 0;

                                            ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_crouch.Opacity = 0.0;
                                            ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_dab.Opacity    = 0.0;
                                            ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_hey.Opacity    = 0.0;
                                            ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_hold.Opacity   = 0.0;
                                            ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_reload.Opacity = 0.0;
                                            ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_normal.Opacity = 0.0;



                                            if (gesture.Name.Equals(crouch_gesture))
                                            {
                                                sre_GestureRecognized(level, "CROUCH");
                                                Console.WriteLine(" CROUCH ");
                                                isGestureDetected = true;
                                                iscrouched        = true;
                                                isdabbing         = false;
                                                isheying          = false;
                                                isholding         = false;
                                                isreloading       = false;
                                                // Never do this, use MVVM, only used this because there's no time left

                                                ((MainWindow)System.Windows.Application.Current.MainWindow).current_gesture.Text   = "Crouch";
                                                ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_crouch.Opacity = 0.5;
                                            }
                                            else if (gesture.Name.Equals(dab_gesture))
                                            {
                                                sre_GestureRecognized(level, "DAB");
                                                Console.WriteLine(" DAB ");
                                                isGestureDetected = true;
                                                iscrouched        = false;
                                                isdabbing         = true;
                                                isheying          = false;
                                                isholding         = false;
                                                isreloading       = false;

                                                ((MainWindow)System.Windows.Application.Current.MainWindow).current_gesture.Text = "Dab";
                                                ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_dab.Opacity  = 0.5;
                                            }
                                            else if (gesture.Name.Equals(hey_gesture))
                                            {
                                                sre_GestureRecognized(level, "HEY");
                                                Console.WriteLine(" HEY ");
                                                isGestureDetected = true;
                                                iscrouched        = false;
                                                isdabbing         = true;
                                                isheying          = false;
                                                isholding         = false;
                                                isreloading       = false;

                                                ((MainWindow)System.Windows.Application.Current.MainWindow).current_gesture.Text = "Hey";
                                                ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_hey.Opacity  = 0.5;
                                            }
                                            else if (gesture.Name.Equals(hold_gesture))
                                            {
                                                sre_GestureRecognized(level, "HOLD");
                                                Console.WriteLine(" HOLD ");
                                                isGestureDetected = true;
                                                iscrouched        = false;
                                                isdabbing         = true;
                                                isheying          = false;
                                                isholding         = false;
                                                isreloading       = false;

                                                ((MainWindow)System.Windows.Application.Current.MainWindow).current_gesture.Text = "Hold";
                                                ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_hold.Opacity = 0.5;
                                            }
                                            else if (gesture.Name.Equals(reload_gesture))
                                            {
                                                sre_GestureRecognized(level, "RELOAD");
                                                Console.WriteLine(" RELOAD ");
                                                isGestureDetected = true;
                                                iscrouched        = false;
                                                isdabbing         = true;
                                                isheying          = false;
                                                isholding         = false;
                                                isreloading       = false;

                                                ((MainWindow)System.Windows.Application.Current.MainWindow).current_gesture.Text   = "Reload";
                                                ((MainWindow)System.Windows.Application.Current.MainWindow).overlay_reload.Opacity = 0.5;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        GestureResultView.UpdateGestureResult(true, isGestureDetected, iscrouched, isdabbing, isheying, isholding, isreloading, level);
                    }
                }
            }
        }
Exemplo n.º 4
0
        // Handle gesture detection results arriving from the sensor for the associated body tracking Id
        private void Reader_GestureFrameArrived(object sender, VisualGestureBuilderFrameArrivedEventArgs e)
        {
            VisualGestureBuilderFrameReference frameReference = e.FrameReference;

            using (var frame = vgbFrameReader.CalculateAndAcquireLatestFrame())
            {
                bool  anyGestureDetected = false;
                bool  stopDetected       = false;
                bool  skipDetected       = false;
                bool  backDetected       = false;
                bool  vupDetected        = false;
                bool  vdownDetected      = false;
                float progress           = 0;

                if (frame != null)
                {
                    // Get gestures results
                    var discreteResults   = frame.DiscreteGestureResults;
                    var continuousResults = frame.ContinuousGestureResults;

                    if (discreteResults != null)
                    {
                        foreach (Gesture gesture in vgbFrameSource.Gestures)
                        {
                            if (gesture.GestureType == GestureType.Discrete)
                            {
                                DiscreteGestureResult result = null;
                                discreteResults.TryGetValue(gesture, out result);

                                if (result != null)
                                {
                                    Console.WriteLine("Discrete Gesture");
                                    anyGestureDetected = false;
                                }
                            }
                        }
                    }

                    if (continuousResults != null)
                    {
                        foreach (Gesture gesture in vgbFrameSource.Gestures)
                        {
                            if (gesture.Name.Equals(stop) || gesture.Name.Equals(back) || gesture.Name.Equals(skip) ||
                                gesture.Name.Equals(vdown) || gesture.Name.Equals(vup))
                            {
                                ContinuousGestureResult result = null;
                                continuousResults.TryGetValue(gesture, out result);

                                if (result != null)
                                {
                                    progress = result.Progress;
                                    if (progress >= 1)
                                    {
                                        count++;
                                        if (count != 15)
                                        {
                                            return;
                                        }
                                        count = 0;
                                        if (gesture.Name.Equals(stop))
                                        {
                                            sendMessage("PAUSE", progress);
                                            anyGestureDetected = true;
                                            stopDetected       = true;
                                            skipDetected       = false;
                                            backDetected       = false;
                                            vupDetected        = false;
                                            vdownDetected      = false;
                                        }
                                        else if (gesture.Name.Equals(skip))
                                        {
                                            sendMessage("BACK", progress);
                                            anyGestureDetected = true;
                                            stopDetected       = false;
                                            skipDetected       = true;
                                            backDetected       = false;
                                            vupDetected        = false;
                                            vdownDetected      = false;
                                        }
                                        else if (gesture.Name.Equals(back))
                                        {
                                            sendMessage("SKIP", progress);
                                            anyGestureDetected = true;
                                            stopDetected       = false;
                                            skipDetected       = false;
                                            backDetected       = true;
                                            vupDetected        = false;
                                            vdownDetected      = false;
                                        }
                                        else if (gesture.Name.Equals(vup))
                                        {
                                            sendMessage("VUP", progress);
                                            anyGestureDetected = true;
                                            stopDetected       = false;
                                            skipDetected       = false;
                                            backDetected       = false;
                                            vupDetected        = true;
                                            vdownDetected      = false;
                                        }
                                        else if (gesture.Name.Equals(vdown))
                                        {
                                            sendMessage("VDOWN", progress);
                                            anyGestureDetected = true;
                                            stopDetected       = false;
                                            skipDetected       = false;
                                            backDetected       = false;
                                            vupDetected        = false;
                                            vdownDetected      = true;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    GestureResultView.UpdateGestureResult(true, anyGestureDetected, stopDetected, skipDetected,
                                                          backDetected, vupDetected, vdownDetected, progress);
                }
            }
        }