Exemple #1
0
        protected void transformHands(ref LeapTransform LeftHand, ref LeapTransform RightHand)
        {
            LeapTransform leapTransform = transform.GetLeapMatrix();

            LeftHand  = new LeapTransform(leapTransform.TransformPoint(LeftHand.translation), leapTransform.TransformQuaternion(LeftHand.rotation));
            RightHand = new LeapTransform(leapTransform.TransformPoint(RightHand.translation), leapTransform.TransformQuaternion(RightHand.rotation));
        }
Exemple #2
0
    // Update is called once per frame
    void Update()
    {
        Frame frame = controller.Frame();

        if (frame.Hands.Count > 1)
        {
            List <Hand> hands = frame.Hands;
            nrOfHit  = 0;
            leapHand = hands[1];
            LeapTransform             leapMatrix = transform.GetLeapMatrix();
            List <List <GameObject> > cubeSides  = new List <List <GameObject> >()
            {
                cubeState.up,
                cubeState.down,
                cubeState.left,
                cubeState.right,
                cubeState.front,
                cubeState.back
            };
            if (leapHand.IsLeft)
            {
                for (int f = 0; f < leapHand.Fingers.Count; f++)
                {
                    Finger  leapFinger           = leapHand.Fingers[f];
                    Vector  transformedPosition  = leapMatrix.TransformPoint(leapFinger.TipPosition);
                    Vector3 transformedDirection = leapMatrix.TransformDirection(leapFinger.Direction).ToVector3();
                    Vector3 fingerPos            = transformedPosition.ToVector3();
                    fingerPos.x        += correctionX;
                    fingerPos.y        += correctionY;
                    fingers[f].position = fingerPos;

                    fingers[f].forward = transformedDirection;
                    RaycastHit hit;
                    if (Physics.Raycast(fingerPos, fingers[f].forward, out hit, 1, layerMask))
                    {
                        Debug.DrawRay(fingerPos, fingers[f].forward * hit.distance, Color.yellow);
                        //print(hit.collider.gameObject);
                        foreach (List <GameObject> cubeSide in cubeSides)
                        {
                            print(cubeSide);
                            if (cubeSide.Contains(hit.collider.gameObject))
                            {
                                //make it childrens to the side
                                //cubeState.PickUp(cubeSide);
                                //start the side rotation logic
                                //cubeSide[4].transform.parent.GetComponent<PivitRotation>().Rotate(cubeSide);
                                //hitCountFaces[hit.collider.gameObject.name]++;
                                hitCountFaces[hit.collider.gameObject.name]++;
                                string colFace = hit.collider.gameObject.name;
                                print(colFace);
                            }
                        }
                        //objectFaces.Add(hit.collider.gameObject);
                    }
                    else
                    {
                        Debug.DrawRay(fingerPos, fingers[f].forward * 1, Color.green);
                        nrOfHit++;
                    }
                }

                string faceHitDeb = getHitFace();
                print(faceHitDeb);
                Quaternion handRotation = leapMatrix.TransformQuaternion(leapHand.Rotation).ToQuaternion();
                rotationFace = Quaternion.Inverse((previosRotation * Quaternion.Inverse(handRotation)));
            }

            previosRotation = leapMatrix.TransformQuaternion(leapHand.Rotation).ToQuaternion();
        }
    }