Beispiel #1
0
 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,
     };
 }
Beispiel #3
0
        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;
        }
Beispiel #4
0
    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;
        }
    }
Beispiel #5
0
        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;
        }
Beispiel #6
0
    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;
        }
    }
Beispiel #7
0
    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);
    }
Beispiel #10
0
        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;
        }
Beispiel #11
0
    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;
        }
    }
Beispiel #12
0
        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);
            }
        }
Beispiel #13
0
        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;
        }
Beispiel #14
0
        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;
        }
Beispiel #15
0
	void Start() {
		PinchDetector = FindObjectOfType<Leap.Unity.PinchDetector> ();
	}
Beispiel #16
0
    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;
            }
        }
    }
Beispiel #17
0
 private void transformSingleAnchor(PinchDetector pinchDetector, PinchInfo pinchInfo)
 {
     var pinchPositionDelta = pinchInfo.pinchDetectorInitialPosition - pinchDetector.Position;
     pinchInfo.node.transform.position = pinchInfo.nodeInitialPosition - pinchPositionDelta;
 }