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; }
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); }