示例#1
0
        private double PointDistance(SpacePoint p1, SpacePoint p2)
        {
            double distance = Math.Round(Math.Sqrt(Math.Pow((p2.X - p1.X), 2) + Math.Pow((p2.Y - p1.Y), 2)), 5);

            return(distance);
        }
示例#2
0
        private void LeftHandActions(IBody body, IJoint lefthand, IJoint spineMid)
        {
            //Point cursorPlanePosition = ConvertToDisplayCoordinates(lefthand.Position.X, lefthand.Position.Y);
            //this._previousCursorPosition = this._cursorPosition;
            //this._cursorPosition = cursorPlanePosition;
            //var haltCursorMove = PointDistance(_cursorPosition, _previousCursorPosition) < 5 ? true : false;
            float  x         = lefthand.Position.X - spineMid.Position.X + 0.3f;
            float  y         = spineMid.Position.Y - lefthand.Position.Y + 0.3f;
            Point  curPos    = Cursor.Position;
            double smoothing = 1 - cursorSmoothing;

            //if (!haltCursorMove)
            //MouseControl.SetCursorPos(curPos.X, curPos.Y);
            MouseControl.SetCursorPos((int)(curPos.X + (x * mouseSensitivity * screenWidth - curPos.X) * smoothing), (int)(curPos.Y + ((y + 0.25f) * mouseSensitivity * screenHeight - curPos.Y) * smoothing));
            alreadyTrackedPos = true;
            if (doClick && useGripGesture)
            {
                #region Drag With Left and Single Click
                if (body.HandLeftState == HandState.Closed)
                {
                    if (!mouseInDrag)
                    {
                        cursorSmoothing = 0.9999;
                    }
                    if (dragMouseGestureState == null)
                    {
                        dragMouseGestureState = new MouseGestureState(PHelper.CurrentTimeMillis());
                        dragMouseGestureState.oldCursorPosition = Cursor.Position;
                        dragMouseGestureState.oldHandPosition   = new SpacePoint(x, y, 0);
                    }
                    else
                    {
                        SpacePoint handCurrentPosition = new SpacePoint(x, y, 0);
                        var        distanceDiff        = PointDistance(dragMouseGestureState.oldHandPosition, handCurrentPosition);
                        if (distanceDiff > 0.09 && !mouseInDrag)
                        {
                            cursorSmoothing = CURSORSMOOTHING;
                            MouseControl.MouseLeftDown();
                            mouseInDrag = true;
                        }
                    }

                    if (clickMouseGestureState == null)
                    {
                        clickMouseGestureState = new MouseGestureState(PHelper.CurrentTimeMillis());
                        clickMouseGestureState.oldCursorPosition = Cursor.Position;
                        clickMouseGestureState.oldHandPosition   = new SpacePoint(x, y, 0);
                    }
                    if (doubleClickMouseGestureState == null)
                    {
                        doubleClickMouseGestureState = new MouseGestureState(PHelper.CurrentTimeMillis());
                        doubleClickMouseGestureState.oldCursorPosition = Cursor.Position;
                        doubleClickMouseGestureState.oldHandPosition   = new SpacePoint(x, y, 0);
                    }
                    //else
                    //{
                    //    var distanceDiff = PointDistance(doubleClickMouseGestureState.oldCursorPosition, Cursor.Position);
                    //    if (distanceDiff < 4)
                    //    {

                    //    }
                    //}
                }
                else if (body.HandLeftState == HandState.Open)
                {
                    cursorSmoothing = CURSORSMOOTHING;
                    if (mouseInDrag)
                    {
                        MouseControl.MouseLeftUp();
                        mouseInDrag           = false;
                        dragMouseGestureState = null;
                    }
                    else
                    {
                        if (clickMouseGestureState != null)
                        {
                            SpacePoint handCurrentPosition = new SpacePoint(x, y, 0);
                            var        distanceDiff        = PointDistance(clickMouseGestureState.oldHandPosition, handCurrentPosition);
                            //var timeDiff = PHelper.CurrentTimeMillis() -
                            if (distanceDiff < 0.05)
                            {
                                MouseControl.DoMouseClick();
                                Console.WriteLine("Mouse Double Click");
                            }
                            clickMouseGestureState = null;
                        }
                    }
                }
                //if (body.HandLeftState == HandState.Closed)
                //{
                //    if (!wasLeftGrip)
                //    {
                //        MouseControl.MouseLeftDown();
                //        wasLeftGrip = true;
                //    }
                //}
                //else if (body.HandLeftState == HandState.Open)
                //{
                //    if (wasLeftGrip)
                //    {
                //        MouseControl.MouseLeftUp();
                //        wasLeftGrip = false;
                //    }
                //}
                #endregion
            }
        }