Esempio n. 1
0
        private void OnFiredUxEventDelegate(PXCMTouchlessController.UXEventData data)
        {
            Dispatcher.BeginInvoke((Action)(() =>
            {
                handCursor.SetPosition(data.position.x, data.position.y, data.position.z,
                                       data.bodySide == PXCMHandData.BodySideType.BODY_SIDE_RIGHT);

                // Permet de détecter si le curseur est hors de la fenêtre
                outOfScreenBorder.X = data.position.x - 0.5f;
                outOfScreenBorder.Y = data.position.y - 0.5f;

                switch (data.type)
                {
                // Détection de la main à l'entrée dans la fenêtre
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorVisible:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Normal);
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Visible);
                    outOfScreenBorder.Visibility = Visibility.Visible;
                    break;

                // Détection de la main si elle de la fenêtre
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorNotVisible:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Hidden);
                    outOfScreenBorder.Visibility = Visibility.Collapsed;
                    break;

                // Action à la fermeture de la main
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_ReadyForAction:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Scroll);
                    CheckButtonClicked(data.position);
                    break;

                // Action re-ouverture de la main
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_EndScroll:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Normal);
                    break;

                // Repérage du mouvement de la main
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorMove:
                    UpdateCursorPositionText(data.position);
                    break;

                // Détection d'un wafe
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_GotoStart:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Wave);
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Normal);
                    OnWave();
                    break;
                }
            }));
        }
Esempio n. 2
0
        private void OnFiredUxEventDelegate(PXCMTouchlessController.UXEventData data)
        {
            Dispatcher.BeginInvoke((Action)(() =>
            {
                cursorDisplay.SetPosition(data.position.x, data.position.y, data.position.z,
                                          data.bodySide == PXCMHandData.BodySideType.BODY_SIDE_RIGHT);

                controller.CheckCollision(data.position, Cube, SchemaGrid);

                outOfScreenBorder.X = data.position.x - 0.5f;
                outOfScreenBorder.Y = data.position.y - 0.5f;

                if (data.type == PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorVisible)
                {
                    cursorDisplay.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Normal);
                    cursorDisplay.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Visible);
                    outOfScreenBorder.Visibility = Visibility.Visible;
                }
                else if (data.type == PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorNotVisible)
                {
                    cursorDisplay.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Hidden);
                    outOfScreenBorder.Visibility = Visibility.Collapsed;
                }
                else if (data.type == PXCMTouchlessController.UXEventData.UXEventType.UXEvent_ReadyForAction)
                {
                    cursorDisplay.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Scroll);
                    controller.SetHandClosed(true);
                    controller.SetStartX(data.position.x - 0.5f);
                    controller.SetStartY(data.position.x - 0.5f);
                }
                else if (data.type == PXCMTouchlessController.UXEventData.UXEventType.UXEvent_EndScroll)
                {
                    cursorDisplay.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Normal);
                    controller.SetHandClosed(false);
                    controller.SetStartX(-999999999);
                    controller.SetStartY(-999999999);
                    controller.SetPreviousX(-999999999);
                    controller.SetPreviousY(-999999999);
                }
            }));
        }
Esempio n. 3
0
        private void OnTouchlessControllerUXEvent(PXCMTouchlessController.UXEventData data)
        {
            try
            {
                FOutUXEvent.SliceCount = 1;
                FOutUXEvent[0]         = data.type.ToString();

                switch (data.type)
                {
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_StartScroll:
                {
                    FOutStartScrollPosition.SliceCount = 1;
                    FOutStartScrollPosition[0]         = new Vector3D(data.position.x, data.position.y, data.position.z);
                    break;
                }

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_Scroll:
                {
                    FOutScrollPosition.SliceCount = 1;
                    FOutScrollPosition[0]         = new Vector3D(data.position.x, data.position.y, data.position.z);

                    break;
                }

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_EndScroll:
                {
                    FOutEndScrollPosition.SliceCount = 1;
                    FOutEndScrollPosition[0]         = new Vector3D(data.position.x, data.position.y, data.position.z);

                    break;
                }

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorVisible:
                {
                    FOutCursorVisiblePosition.SliceCount = 1;
                    FOutCursorVisiblePosition[0]         = new Vector3D(data.position.x, data.position.y, data.position.z);

                    break;
                }

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorMove:
                {
                    FOutCursorMovePosition.SliceCount = 1;
                    FOutCursorMovePosition[0]         = new Vector3D(data.position.x, data.position.y, data.position.z);

                    break;
                }

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorNotVisible:
                {
                    FOutCursorNotVisiblePosition.SliceCount = 1;
                    FOutCursorNotVisiblePosition[0]         = new Vector3D(data.position.x, data.position.y, data.position.z);

                    break;
                }

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_StartZoom:
                {
                    FOutStartZoomPosition.SliceCount = 1;
                    FOutStartZoomPosition[0]         = new Vector3D(data.position.x, data.position.y, data.position.z);

                    break;
                }

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_Zoom:
                {
                    FOutZoomPosition.SliceCount = 1;
                    FOutZoomPosition[0]         = new Vector3D(data.position.x, data.position.y, data.position.z);

                    break;
                }

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_EndZoom:
                {
                    FOutEndZoomPosition.SliceCount = 1;
                    FOutEndZoomPosition[0]         = new Vector3D(data.position.x, data.position.y, data.position.z);

                    break;
                }
                }
            }
            catch (Exception e)
            {
                FLogger.Log(LogType.Error, e.Message, e);
            }
        }
Esempio n. 4
0
        private void OnFiredUxEventDelegate(PXCMTouchlessController.UXEventData data)
        {
            Dispatcher.BeginInvoke((Action)(() =>
            {
                handCursor.SetPosition(data.position.x, data.position.y, data.position.z,
                                       data.bodySide == PXCMHandData.BodySideType.BODY_SIDE_RIGHT);
                // update the cursor position for the out of window feedback
                outOfScreenBorder.X = data.position.x - 0.5f;
                outOfScreenBorder.Y = data.position.y - 0.5f;


                switch (data.type)
                {
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorVisible:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Normal);
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Visible);
                    outOfScreenBorder.Visibility = Visibility.Visible;
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorMove:
                    UpdateCursorPositionText(data.position);
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorNotVisible:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Hidden);
                    outOfScreenBorder.Visibility = Visibility.Collapsed;
                    UpdateGestureText("Cursor not visible");
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_ReadyForAction:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Scroll);
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_GotoStart:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Wave);
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Normal);
                    OnWave();
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_Select:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Select);
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Normal);
                    CheckButtonClicked(data.position);
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_StartZoom:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Scroll);
                    UpdateGestureText(String.Format("Gesture: Start Zoom"));
                    m_prevZoomZ = data.position.z;
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_Zoom:
                    m_zoomDelta = m_prevZoomZ - data.position.z;
                    if (Math.Abs(m_zoomDelta) > 0.01)
                    {
                        m_prevZoomZ = data.position.z;
                        // We use a constant zooming option that is set by number of zoom events
                        // To have zooming relative to hand movement just use the `zoomDelta`
                        var zoom = m_zoomDelta > 0 ? 1.05 : .95;
//                            ZoomableImage.Height *= zoom;
//                            ZoomableImage.Width *= zoom;
                        UpdateGestureText(String.Format("Gesture: Zooming x{0:0.00}...", zoom));
                    }
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_EndZoom:
                    UpdateGestureText(String.Format("Gesture: End Zoom"));
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_StartScroll:
                    double height = VisualFeedbackGrid.ActualHeight;
                    double width = VisualFeedbackGrid.ActualWidth;



                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Scroll);
                    UpdateGestureText(String.Format("Gesture: Start Scroll"));
                    m_initialVerticalScrollPoint = data.position.y;
                    m_initialHorizontalScrollPoint = data.position.x;
                    //   m_initialVerticalScrollOffest = m_myVerticalListScrollViwer.VerticalOffset;
                    //   m_initialHorizontalScrollOffest = m_myHorizontalListScrollViwer.HorizontalOffset;

                    var p = new Point((float)((width * m_initialHorizontalScrollPoint) - digitCanvas.Margin.Left),
                                      (float)((height * m_initialVerticalScrollPoint) - digitCanvas.Margin.Top));
                    Interaction_Down(p);

                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_Scroll:
                    UpdateGestureText(String.Format("Gesture: Scrolling... [Hand Position: ({0})]",
                                                    data.position.ToFormattedString()));
                    //paint_test(data.position);

                    height = VisualFeedbackGrid.ActualHeight;
                    width = VisualFeedbackGrid.ActualWidth;

                    m_initialVerticalScrollPoint = data.position.y;
                    m_initialHorizontalScrollPoint = data.position.x;
                    //   m_initialVerticalScrollOffest = m_myVerticalListScrollViwer.VerticalOffset;
                    //   m_initialHorizontalScrollOffest = m_myHorizontalListScrollViwer.HorizontalOffset;

                    p = new Point((float)((width * m_initialHorizontalScrollPoint) - digitCanvas.Margin.Left),
                                  (float)((height * m_initialVerticalScrollPoint) - digitCanvas.Margin.Top));

                    Interaction_Progress(p);
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_EndScroll:
                    Interaction_Up();
                    m_stopContinuousVerticalScroll = true;
                    m_stopContinuousHorizontalScroll = true;
                    UpdateGestureText(String.Format("Gesture: End Scroll"));
                    break;
                //case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_Back:
                //    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Back);
                //    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Normal);
                //    OnBack();
                //    break;

                /*
                 *  PXCMTouchlessController.ProfileInfo.Configuration.Configuration_Edge_Scroll_Vertically
                 */
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_ScrollUp:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Up);
                    Task.Factory.StartNew(() => ContinuousVerticalScroll(-VerticalScrollStep));
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_ScrollDown:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Down);
                    Task.Factory.StartNew(() => ContinuousVerticalScroll(VerticalScrollStep));
                    break;

                /*
                 *  PXCMTouchlessController.ProfileInfo.Configuration.Configuration_Edge_Scroll_Horizontally
                 */
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_ScrollLeft:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Left);
                    Task.Factory.StartNew(() => ContinuousHorizontalScroll(-HorizontalScrollStep));
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_ScrollRight:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Right);
                    Task.Factory.StartNew(() => ContinuousHorizontalScroll(HorizontalScrollStep));
                    break;

                /*
                 *  PXCMTouchlessController.ProfileInfo.Configuration.Configuration_Meta_Context_Menu
                 */
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_StartMetaCounter:
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_StopMetaCounter:
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_ShowMetaMenu:
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_HideMetaMenu:
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_MetaPinch:
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Select);
                    handCursor.ChangeCursorState(RealSenseNavigator.CursorDisplay.CursorStates.Normal);
                    CheckCanvasPinched(data.position);
                    break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_MetaOpenHand:
                    UpdateGestureText(String.Format("Gesture: {0}", data.type));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }));
        }
Esempio n. 5
0
        private void OnTouchlessControllerUXEvent(PXCMTouchlessController.UXEventData data)
        {
            if (this.Dispatcher.CheckAccess())
            {
                switch (data.type)
                {
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorVisible:
                {
                    LabelStatus.Content = "Cursor Visible";
                    DisplayArea.Cursor  = Cursors.Hand;
                }
                break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorNotVisible:
                {
                    LabelStatus.Content = "Cursor Not Visible";
                    DisplayArea.Cursor  = null;
                }
                break;

                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_Select:
                {
                    LabelStatus.Content = "Select";
                    MouseInjection.ClickLeftMouseButton();
                }
                break;

                //case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_StartScroll:
                //    {
                //        Console.WriteLine("Start Scroll");
                //        initialScrollPoint = data.position.y;
                //        initialScrollOffest = myListscrollViwer.VerticalOffset;
                //    }
                //    break;
                case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_CursorMove:
                {
                    Point point = new Point();
                    point.X = Math.Max(Math.Min(1.0F, data.position.x), 0.0F);
                    point.Y = Math.Max(Math.Min(1.0F, data.position.y), 0.0F);

                    if (Math.Abs(oldXpos - data.position.x) < 0.005F && Math.Abs(oldYpos - data.position.y) < 0.005F)
                    {
                        return;
                    }

                    Label11.Content = "data.position.x" + data.position.x;
                    Label2.Content  = "data.position.y" + data.position.y;
                    oldXpos         = data.position.x;
                    oldYpos         = data.position.y;

                    Point myListBoxPosition  = DisplayArea.PointToScreen(new Point(0.0, 0.0));
                    Point myListBoxPosition2 = DisplayArea.PointToScreen(new Point(DisplayArea.ActualWidth, DisplayArea.ActualHeight));

                    var d1 = myListBoxPosition2.X - myListBoxPosition.X;
                    var d2 = myListBoxPosition2.Y - myListBoxPosition.Y;

                    int mouseX = (int)(myListBoxPosition.X + point.X * d1);
                    int mouseY = (int)(myListBoxPosition.Y + point.Y * d2);

                    Label3.Content = "mouseX" + mouseX;
                    Label4.Content = "mouseY" + mouseY;
                    MouseInjection.SetCursorPos(mouseX, mouseY);
                }
                break;
                    //case PXCMTouchlessController.UXEventData.UXEventType.UXEvent_Scroll:
                    //    {
                    //        Console.WriteLine("Scrolling");
                    //        myListscrollViwer.ScrollToVerticalOffset(initialScrollOffest + (data.position.y - initialScrollPoint) * scrollSensitivity);
                    //    }
                    //    break;
                }
            }
            else
            {
                this.Dispatcher.Invoke(new Action(() => OnTouchlessControllerUXEvent(data)));
            }
        }