private void UpdatePinchSingle(PinchDetector pinchDetector, ClosestNode closestNode, ref PinchInfo pinchInfo) { // if pinch detected, update pinch info if (pinchDetector.DidStartPinch) { pinchInfo = GetPinchInfo(pinchDetector, closestNode); } if (pinchInfo.node != null) { // set node as pinched when pinch starts if (pinchDetector.DidStartPinch) { pinchInfo.node.Pinched = true; } // update node position to match pinch movement if (pinchDetector.IsPinching) { transformSingleAnchor(pinchDetector, pinchInfo); } // release node when pinch ends if (pinchDetector.DidEndPinch) { pinchInfo.node.Pinched = false; } } }
private PinchInfo GetPinchInfo(PinchDetector pinchDetector, ClosestNode closestNode) { return new PinchInfo { node = closestNode.curr, nodeInitialPosition = (closestNode.curr == null) ? Vector3.zero : closestNode.curr.gameObject.transform.position, pinchDetectorInitialPosition = pinchDetector.Position, }; }
private PinchInfo GetPinchInfo(PinchDetector pinchDetector, ClosestNode closestNode) { return(new PinchInfo { node = closestNode.curr, nodeInitialPosition = (closestNode.curr == null) ? Vector3.zero : closestNode.curr.gameObject.transform.position, pinchDetectorInitialPosition = pinchDetector.Position, }); }
private void UpdateClosestNodeSelection(ref ClosestNode closestNodeParams) { if (closestNodeParams.prev != closestNodeParams.curr) { if (closestNodeParams.prev != null) { closestNodeParams.prev.Selected = false; } if (closestNodeParams.curr != null) { closestNodeParams.curr.Selected = true; } } }
private void UpdateClosestNode(PinchDetector pinchDetector, ClosestNode closestNode) { closestNode.prev = closestNode.curr; // get closest node to index tip var handModel = pinchDetector.GetComponentInParent<IHandModel>(); if (handModel != null) { var index = handModel.GetLeapHand().Fingers[1]; var indexTipPosition = index.TipPosition.ToVector3(); var closestNodeToIndexTip = gameObject.GetComponent<Graph>().GetClosestNodeOrNull(indexTipPosition); const float maxDistance = 0.03f; closestNode.curr = Vector3.Distance(indexTipPosition, closestNodeToIndexTip.transform.position) <= maxDistance ? closestNodeToIndexTip : null; } else { closestNode.curr = null; } UpdateClosestNodeSelection(ref closestNode); }
private void UpdateClosestNode(PinchDetector pinchDetector, ClosestNode closestNode) { closestNode.prev = closestNode.curr; // get closest node to index tip var handModel = pinchDetector.HandModel; if (handModel.IsTracked) { var index = handModel.GetLeapHand().Fingers[1]; var indexTipPosition = index.TipPosition.ToVector3(); var closestNodeToIndexTip = gameObject.GetComponent <Graph>().GetClosestNodeOrNull(indexTipPosition); const float maxDistance = 0.03f; closestNode.curr = Vector3.Distance(indexTipPosition, closestNodeToIndexTip.transform.position) <= maxDistance ? closestNodeToIndexTip : null; } else { closestNode.curr = null; } UpdateClosestNodeSelection(ref closestNode); }