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); }
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 } }