Esempio n. 1
0
    public override bool Detected()
    {
        if (!DetectionManager.Get().IsHandSet(m_Hand))
        {
            return(false);
        }

        m_DetectHand = DetectionManager.Get().GetHand(m_Hand);

        bool bExtended = false;

        for (int i = 0; i < (int)EFinger.ePinky; i++)
        {
            EFinger finger = EFinger.eThumb + i;

            if (m_DetectHand.GetFinger(finger).IsExtended())
            {
                if (finger == m_Finger)
                {
                    bExtended = true;
                }
                else
                {
                    if (m_OthersClosed)
                    {
                        return(false);
                    }
                }
            }
        }

        return(bExtended);
    }
    public override bool Detected()
    {
        DetectionManager.DetectionHand detectHand = DetectionManager.Get().GetHand(m_Hand);

        if (detectHand.IsSet())
        {
            if (detectHand.GetFinger(EFinger.eThumb).IsExtended())
            {
                for (int i = (int)EFinger.eThumb; i <= (int)EFinger.ePinky; i++)
                {
                    EFinger finger = EFinger.eThumb + i;

                    if (finger != EFinger.eThumb && finger != EFinger.eUnknown)
                    {
                        if (detectHand.GetFinger(finger).IsExtended())
                        {
                            return(false);
                        }
                    }
                }

                return(true);
            }
        }

        return(false);
    }
Esempio n. 3
0
    public override bool Detected()
    {
        DetectionManager.DetectionHand specifiedHand = DetectionManager.Get().GetHand(m_Hand);

        if (!DetectionManager.Get().IsHandSet(m_Hand))
        {
            return(false);
        }

        for (int i = 0; i < 5; i++)
        {
            EFinger type = EFinger.eThumb + i;

            if (type != EFinger.eIndex)
            {
                if (specifiedHand.GetFinger(type).IsExtended())
                {
                    return(false);
                }
            }
        }

        bool bIndexExtended = specifiedHand.GetFinger(EFinger.eIndex).IsExtended();

        return(bIndexExtended);
    }
    private void Awake()
    {
        if (sInstance == null)
        {
            sInstance = this;
        }
        else
        {
            Destroy(this);
        }

        m_LeftDetection  = new DetectionHand();
        m_RightDetection = new DetectionHand();

        m_LeapService = FindObjectOfType <LeapServiceProvider>();

        bool[] leftBools  = LeftActivationFingers.GetAsArray();
        bool[] rightBools = RightActivationFingers.GetAsArray();

        for (int i = 0; i < leftBools.Length; i++)
        {
            EFinger SelectedFinger = EFinger.eThumb + i;
            if (leftBools[i])
            {
                m_LeftFingerCollisions.Add(SelectedFinger, CreateCollisionSphere());
            }

            if (rightBools[i])
            {
                m_RightFingerCollisions.Add(SelectedFinger, CreateCollisionSphere());
            }
        }
    }
 public GestureRequirementData(GestureRequirement a_Requirement)
 {
     m_Requirement    = a_Requirement;
     m_FloatValue     = 0.0f;
     m_BoolValue      = false;
     m_FingerValue    = EFinger.eThumb;
     m_DirectionValue = EDirection.eOutwards;
     m_HandAxisValue  = EHandAxis.ePalmDirection;
 }
Esempio n. 6
0
 public float DistanceBetweenFingers(EFinger a_Finger0, EFinger a_Finger1)
 {
     if (a_Finger0 == a_Finger1)
     {
         return(0.0f);
     }
     else
     {
         Vector3 fingerPosition1 = GetFinger(a_Finger0).GetTipPosition();
         Vector3 fingerPosition2 = GetFinger(a_Finger1).GetTipPosition();
         return(Vector3.Distance(fingerPosition1, fingerPosition2));
     }
 }
Esempio n. 7
0
    public override bool Detected()
    {
        DetectionManager.DetectionHand detectHand = DetectionManager.Get().GetHand(m_Hand);

        EFinger indexFinger = EFinger.eThumb + 1;

        if (detectHand.IsSet())
        {
            if (detectHand.CheckWithDetails(m_GestureDetail))
            {
                var rot = detectHand.GetRotation();

                if (timeBegin == false)
                {
                    timeElapsed = timeReset;
                    timeBegin   = true;
                }

                //Debug.DrawRay(detectHand.GetFinger(indexFinger).GetTipPosition(), detectHand.GetFinger(indexFinger).GetFingerDirection() * 3.0f, Color.white);
                //Debug.DrawRay(DetectionManager.Get().GetHand(m_Hand).GetHandPosition(), detectionHand.GetHandAxis(m_HandAxis) * 1000, Color.red);


                //Debug.Log(stayTime);


                if (rot.x > 0.25f && m_CoolDownLeft <= 0.0f && timeElapsed >= 3.5f && timeElapsed <= 8.0f && timeBegin)
                {
                    m_CoolDownLeft = m_CooldownTime;
                    GameObject projectile = Instantiate(prefab) as GameObject;
                    var        spawn      = detectHand.GetFinger(indexFinger).GetTipPosition();

                    projectile.transform.position = spawn;
                    Rigidbody rb = projectile.GetComponent <Rigidbody>();
                    //var di = detectHand.GetFinger(indexFinger).GetFingerDirection();
                    //di.y -= 0.6f;
                    // di.z += 0.3f;
                    //di.x += 0.2f;
                    //rb.AddForce(Camera.main.transform.forward * 20f, ForceMode.VelocityChange);
                    rb.velocity = Vector3.forward * 8;
                    timeBegin   = false;
                }


                return(true);
            }
        }

        return(false);
    }
Esempio n. 8
0
        public int NumberOfFingersExtended()
        {
            int num = 0;

            for (int i = 0; i <= (int)EFinger.ePinky; i++)
            {
                EFinger finger = EFinger.eThumb + i;
                if (IsFingerExtended(finger))
                {
                    num++;
                }
            }

            return(num);
        }
Esempio n. 9
0
    public override bool Detected()
    {
        EFinger thumbFinger  = EFinger.eThumb;
        EFinger middleFinger = EFinger.eThumb + 2;

        m_DetectHand = DetectionManager.Get().GetHand(m_Hand);

        if (m_DetectHand.IsSet())
        {
            if (m_DetectHand.CheckWithDetails(m_GestureDetail))
            {
                //Debug.Log("ok");
                //Debug.DrawRay(m_DetectHand.GetFinger(indexFinger).GetTipPosition(), m_DetectHand.GetFinger(indexFinger).GetFingerDirection() * 1000, Color.white);
                snap = true;

                /*var thumbTipPosition = m_DetectHand.GetFinger(thumbFinger).GetTipPosition();
                 * var middleTipPosition = m_DetectHand.GetFinger(middleFinger).GetTipPosition();
                 * float distance = Vector3.Distance(thumbTipPosition, middleTipPosition);
                 * Debug.Log(distance);
                 * if (distance < DeactivateDistance)
                 *  return true;*/
                gapLeft = timeGap;
            }

            //Debug.Log(gapLeft);
            if (snap && gapLeft > 0.0f)
            {
                var   thumbTipPosition  = m_DetectHand.GetFinger(thumbFinger).GetTipPosition();
                var   middleTipPosition = m_DetectHand.GetFinger(middleFinger).GetTipPosition();
                float distance          = Vector3.Distance(thumbTipPosition, middleTipPosition);
                // Debug.Log(distance);
                if (distance < 0.02f)
                {
                    // Debug.Log("snap");
                    return(true);
                }
            }
        }

        return(false);
    }
Esempio n. 10
0
    public override bool Detected()
    {
        bool       bFound           = false;
        EDirection currentDirection = GetClosestDirection(ref bFound);

        if (bFound)
        {
            if (currentDirection == m_Direction)
            {
                DetectionManager.DetectionHand detectHand = DetectionManager.Get().GetHand(m_Hand);

                if (detectHand.IsSet())
                {
                    if (detectHand.GetFinger(EFinger.eThumb).IsExtended())
                    {
                        for (int i = (int)EFinger.eThumb; i <= (int)EFinger.ePinky; i++)
                        {
                            EFinger finger = EFinger.eThumb + i;

                            if (finger != EFinger.eThumb && finger != EFinger.eUnknown)
                            {
                                if (detectHand.GetFinger(finger).IsExtended())
                                {
                                    return(false);
                                }
                            }
                        }

                        return(true);
                    }
                }
            }
        }

        return(false);
    }
Esempio n. 11
0
 public bool IsFingerExtended(EFinger a_finger)
 {
     return(GetFinger(a_finger).IsExtended());
 }
Esempio n. 12
0
 public DetectionFinger GetFinger(EFinger a_FingerType)
 {
     return(m_Fingers[(int)a_FingerType]);
 }
Esempio n. 13
0
    public void onGestureStay()
    {
        if (DetectionManager.Get().IsHandSet(m_Hand))
        {
            // Detect index finger
            m_DetectHand = DetectionManager.Get().GetHand(m_Hand);
            EFinger finger = EFinger.eThumb + 1;

            // Do raycast here
            if (DetectionManager.Get().GetHand(m_Hand).IsPinching())
            {
                RaycastHit hit;

                // Draw ray
                Debug.DrawRay(m_DetectHand.GetFinger(finger).GetTipPosition(), m_DetectHand.GetFinger(finger).GetFingerDirection() * 0.06f, Color.white);

                if (pinching != null)
                {
                    return;
                }

                // Draw ray for palm instead
                //Debug.DrawRay(DetectionManager.Get().GetHand(m_Hand).GetHandPosition(), transform.TransformDirection(Vector3.forward) * 1000, Color.white);

                if (Physics.Raycast(m_DetectHand.GetFinger(finger).GetTipPosition(), m_DetectHand.GetFinger(finger).GetFingerDirection(), out hit, 0.06f)) // need a length limit on raycast
                {
                    if (hit.collider.tag == "Card")
                    {
                        Debug.Log("YEET");
                        //hit.collider.gameObject.transform.parent = parentObject.transform;

                        /*
                         * testObject.transform.parent = parentObject.transform;
                         * vector = parentObject.transform.position;
                         * vector.z += 0.25f;
                         */

                        GameObject   go = hit.collider.gameObject;
                        CardBehavior cb = go.GetComponent <CardBehavior>();
                        DeckBehavior db = deck.GetComponent <DeckBehavior>();
                        if (db.cardsInHand.Contains(cb)) // the card pinched is in hand
                        {
                            db.HandToPinch(go);
                        }
                        else // the card pinched is in wild
                        {
                            cb.pinched = true;
                        }


                        go.transform.parent = parentObject.transform;

                        pinching = go;

                        //vector = testObject.transform.position - parentObject.transform.position;
                        //testObject.transform.position = vector;
                        //testObject.transform.position = parentObject.transform.position + translateVector;
                        //hit.collider.gameObject.GetComponent<Rigidbody>().useGravity = false;
                    }
                }
            } // End raycast
        }
    }
    void UpdateHand(Hand hand)
    {
        if (hand.IsLeft)
        {
            m_LeftDetection.SetHand(hand);

            for (int i = 0; i < 5; i++)
            {
                EFinger SelectedFinger = EFinger.eThumb + i;

                if (m_LeftFingerCollisions.ContainsKey(SelectedFinger))
                {
                    m_LeftFingerCollisions[SelectedFinger].transform.position = m_LeftDetection.GetFinger(SelectedFinger).GetTipPosition();
                    m_LeftFingerCollisions[SelectedFinger].SetActive(true);
                }

                if (m_iNumberOfHands == 1)
                {
                    if (m_RightFingerCollisions.ContainsKey(SelectedFinger))
                    {
                        m_RightFingerCollisions[SelectedFinger].SetActive(false);
                    }
                }
            }

            m_bLeftIsVisible = true;

            if (m_iNumberOfHands == 1)
            {
                m_bRightIsVisible = false;
            }
        }
        else
        {
            m_RightDetection.SetHand(hand);

            for (int i = 0; i < 5; i++)
            {
                EFinger SelectedFinger = EFinger.eThumb + i;

                if (m_RightFingerCollisions.ContainsKey(SelectedFinger))
                {
                    m_RightFingerCollisions[SelectedFinger].transform.position = m_RightDetection.GetFinger(SelectedFinger).GetTipPosition();
                    m_RightFingerCollisions[SelectedFinger].SetActive(true);
                }

                if (m_iNumberOfHands == 1)
                {
                    if (m_LeftFingerCollisions.ContainsKey(SelectedFinger))
                    {
                        m_LeftFingerCollisions[SelectedFinger].SetActive(false);
                    }
                }
            }

            m_bRightIsVisible = true;

            if (m_iNumberOfHands == 1)
            {
                m_bLeftIsVisible = false;
            }
        }
    }