EDirection GetClosestDirection(ref bool a_bDetected, EHand InHand, EHandAxis InAxis)
    {
        DetectionManager.DetectionHand detectionHand = DetectionManager.Get().GetHand(InHand);

        if (!detectionHand.IsSet())
        {
            a_bDetected = false;
            return(EDirection.eDownwards);
        }

        Vector3 handDirection = detectionHand.GetHandAxis(InAxis);

        float      currentDistance = float.MaxValue;
        EDirection currentDir      = EDirection.eUpwards;

        Dictionary <EDirection, Vector3> directionMap = GetDirections();

        foreach (EDirection dir in directionMap.Keys)
        {
            float newDistance = Vector3.Distance(handDirection, directionMap[dir]);

            if (newDistance < currentDistance)
            {
                currentDistance = newDistance;
                currentDir      = dir;
                a_bDetected     = true;
            }
        }

        return(currentDir);
    }
 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;
 }
Ejemplo n.º 3
0
        public Vector3 GetHandAxis(EHandAxis a_HandAxis)
        {
            switch (a_HandAxis)
            {
            case EHandAxis.ePalmDirection:
                return(m_Hand.PalmarAxis());

            case EHandAxis.eThumbDirection:
                return(m_Hand.RadialAxis());

            case EHandAxis.eFingerDirection:
                return(m_Hand.DistalAxis());

            default:
                break;
            }

            return(Vector3.zero);
        }