void PinchMove(Leap.Unity.PinchDetector detector) { if (deform) { Vector3 pointOfAttack = detector.Position - Vector3.down * 0.1f; } }
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, }; }
public void releaseCube() { Vector3 size = transform.GetChild(0).transform.localScale; if (transform.GetChild(0).GetComponent <touchFB>().large) { transform.GetChild(0).transform.localScale = new Vector3(size.x / 2, size.y / 2, size.z / 2); transform.GetChild(0).GetComponent <touchFB>().large = false; } _pinchDetectorA = tempPDL; _pinchDetectorB = tempPDR; }
void HandlePinchInput(Leap.Unity.PinchDetector detector) { RaycastHit hit; if (Physics.Raycast(detector.Position, Vector3.down, out hit)) { deformer = hit.collider.GetComponent <TerrainCollider>(); } if (deformer) { deform = true; point = hit.point; } }
private void enlargeCube() { Vector3 size = transform.GetChild(0).transform.localScale; if (!transform.GetChild(0).GetComponent <touchFB>().large) { transform.GetChild(0).transform.localScale = new Vector3(size.x * 2, size.y * 2, size.z * 2); transform.GetChild(0).GetComponent <touchFB>().large = true; } //save pinchDetector -> stop being pinched: tempPDL = _pinchDetectorA; tempPDR = _pinchDetectorB; // _pinchDetectorA = null; _pinchDetectorB = null; }
void PinchMove(Leap.Unity.PinchDetector detector) { if (deform) { currentPosition = detector.Position; Vector3 pointOfAttack = point; float dist = (float)currentPosition.y - (float)originalPosition.y; Debug.Log("Current position = " + currentPosition.y); Debug.Log("Original position = " + originalPosition.y); if (Mathf.Abs(dist) > .001f) { force = FORCE_MULTIPLIER * dist; if (force > 0) { pointOfAttack += Vector3.down * forceOffset; if ((++iterator % 20) == 1) { points [numOfPoints++] = pointOfAttack; } Debug.Log("NumOfPoints = " + numOfPoints.ToString()); } else if (force < 0) { pointOfAttack += Vector3.up * forceOffset; force *= -1; } for (int i = numOfPoints - 1; i <= 0; i--) { if (iterator % 20 == 1) { deformer.addDeformingForce(points[i], force /= 1.1f); } else { deformer.addDeformingForce(points[i], force); } } } originalPosition = currentPosition; } }
void Update() { if (virgin) { virgin = false; lPinch = GameObject.FindGameObjectWithTag("Pedestal").GetComponent <Leap.Unity.JamesV_LeapRTS>().PinchDetectorA; rPinch = GameObject.FindGameObjectWithTag("Pedestal").GetComponent <Leap.Unity.JamesV_LeapRTS>().PinchDetectorB; } if (tableSelected != null) { if (CheckPinch()) { Release(); } } }
void Update() { if(virgin) { virgin = false; lPinch = GameObject.FindGameObjectWithTag("Pedestal").GetComponent<Leap.Unity.JamesV_LeapRTS>().PinchDetectorA; rPinch = GameObject.FindGameObjectWithTag("Pedestal").GetComponent<Leap.Unity.JamesV_LeapRTS>().PinchDetectorB; } if(tableSelected != null) { if(CheckPinch()) { Release(); } } }
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 transformSingleAnchor(PinchDetector singlePinch) { _anchor.position = singlePinch.Position; switch (_oneHandedRotationMethod) { case RotationMethod.None: break; case RotationMethod.Single: Vector3 p = singlePinch.Rotation * Vector3.right; p.y = _anchor.position.y; _anchor.LookAt(p); break; case RotationMethod.Full: _anchor.rotation = singlePinch.Rotation; break; } _anchor.localScale = Vector3.one; }
void HandlePinchInput(Leap.Unity.PinchDetector detector) { Debug.Log("Hit something"); RaycastHit hit; if (Physics.Raycast(detector.Position, Vector3.down, out hit, .5f)) { deformer = hit.collider.GetComponent <MeshDeformer> (); } else if (Physics.Raycast(detector.Position, Vector3.down, out hit, .5f)) { deformer = hit.collider.GetComponent <MeshDeformer> (); } if (deformer) { deform = true; originalPosition = detector.Position; point = hit.point; } }
protected virtual void Awake() { if (GetComponent <IHandModel>() != null) { Debug.LogWarning("LeapPinchDetector should not be attached to the IHandModel's transform. It should be attached to its own transform."); } if (_handModel == null) { Debug.LogWarning("The HandModel field of LeapPinchDetector was unassigned and the detector has been disabled."); enabled = false; } Transform pinchDrawing = transform.root.Find("Pinch Drawing"); PinchDraw pinchDraw = pinchDrawing.transform.GetComponent("PinchDraw") as PinchDraw; PinchDetector pinchDetector = transform.GetComponent("PinchDetector") as PinchDetector; if (pinchDetector != null) { pinchDraw.AddPinchDetector(pinchDetector); } }
public void transformSingleAnchor(PinchDetector singlePinch) { _anchor.position = singlePinch.Position; Debug.Log("h,"); transform.GetComponent <Rigidbody>().isKinematic = true; switch (_oneHandedRotationMethod) { case RotationMethod.None: break; case RotationMethod.Single: Vector3 p = singlePinch.Rotation * Vector3.right; p.y = _anchor.position.y; _anchor.LookAt(p); break; case RotationMethod.Full: _anchor.rotation = singlePinch.Rotation; break; } _anchor.localScale = Vector3.one; }
private void transformSingleAnchor(PinchDetector singlePinch) { _anchor.position = singlePinch.Position * speed; switch (_oneHandedRotationMethod) { case RotationMethod.None: break; case RotationMethod.Single: Vector3 p = singlePinch.Rotation * Vector3.right; p.y = _anchor.position.y; _anchor.LookAt(p); break; case RotationMethod.Full: _anchor.rotation = singlePinch.Rotation; break; } _anchor.localScale = Vector3.one; }
void Start() { PinchDetector = FindObjectOfType<Leap.Unity.PinchDetector> (); }
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 void transformSingleAnchor(PinchDetector pinchDetector, PinchInfo pinchInfo) { var pinchPositionDelta = pinchInfo.pinchDetectorInitialPosition - pinchDetector.Position; pinchInfo.node.transform.position = pinchInfo.nodeInitialPosition - pinchPositionDelta; }