public override bool JustifiesRequirement(EHand Hand, GestureRequirementData RequirementData)
    {
        DetectionManager.DetectionHand SelectedHand = DetectionManager.Get().GetHand(Hand);
        if (SelectedHand.IsSet())
        {
            Vector3 FingerDirection = SelectedHand.GetFinger(RequirementData.m_FingerValue).GetFingerDirection();

            DetectionManager.DetectionFinger SelectedFinger = SelectedHand.GetFinger(RequirementData.m_FingerValue);

            Vector3 Bone1Dir = SelectedFinger.GetBoneDirection(ESpecificBone.eBone0);
            Vector3 Bone2Dir = SelectedFinger.GetBoneDirection(ESpecificBone.eBone1);
            Vector3 Bone3Dir = SelectedFinger.GetBoneDirection(ESpecificBone.eBone2);

            float boneDot;

            if (RequirementData.m_FingerValue == EFinger.eThumb)
            {
                boneDot = Mathf.Clamp(Vector3.Dot(Bone2Dir, Bone3Dir), 0.0f, 1.0f);
            }
            else
            {
                boneDot = Mathf.Clamp(Vector3.Dot(Bone1Dir, Bone3Dir), 0.0f, 1.0f);
            }

            float percentage = Mathf.Lerp(1.0f, 0.0f, boneDot);

            if (percentage > RequirementData.m_FloatValue)
            {
                return(true);
            }
        }

        return(false);
    }
    public override bool JustifiesRequirement(EHand Hand, GestureRequirementData RequirementData)
    {
        if (DetectionManager.Get().IsHandSet(Hand))
        {
            return(DetectionManager.Get().GetHand(Hand).IsPinching());
        }

        return(false);
    }
Exemplo n.º 3
0
    public override bool JustifiesRequirement(EHand Hand, GestureRequirementData RequirementData)
    {
        DetectionManager.DetectionHand SelectedHand = DetectionManager.Get().GetHand(Hand);
        if (SelectedHand.IsSet())
        {
            if (RequirementData.m_BoolValue == SelectedHand.GetFinger(RequirementData.m_FingerValue).IsExtended())
            {
                return(true);
            }
        }

        return(false);
    }
    public override bool JustifiesRequirement(EHand Hand, GestureRequirementData RequirementData)
    {
        EDirection Dir = EDirection.eOutwards;

        if (IsSwiping(ref Dir, RequirementData.m_FloatValue, Hand))
        {
            if (Dir == RequirementData.m_DirectionValue)
            {
                return(true);
            }
        }

        return(false);
    }
    public override bool JustifiesRequirement(EHand Hand, GestureRequirementData RequirementData)
    {
        bool       bDetected = false;
        EDirection Direction = GetClosestDirection(ref bDetected, Hand, RequirementData.m_HandAxisValue);

        if (bDetected)
        {
            if (RequirementData.m_DirectionValue == Direction)
            {
                return(true);
            }
        }

        return(false);
    }
 public virtual bool JustifiesRequirement(EHand Hand, GestureRequirementData RequirementData)
 {
     return(false);
 }
Exemplo n.º 7
0
    void DrawCustomGestureWidget(GestureRequirementData requirement, EHand Hand, SerializedProperty InReqArrayElem)
    {
        GUIStyle RemoveButton = new GUIStyle(GUI.skin.button)
        {
            stretchWidth = false
        };

        GUIStyle ExtrasButton = new GUIStyle(GUI.skin.button)
        {
            stretchWidth = false
        };

        GUIStyle LabelText = new GUIStyle(GUI.skin.label)
        {
            alignment = TextAnchor.MiddleLeft,
            fontSize  = 15,
            fontStyle = FontStyle.Bold
        };

        GUIStyle BorderStyle = new GUIStyle(EditorStyles.helpBox);

        GUI.backgroundColor = Color.white;
        EditorGUILayout.BeginHorizontal(BorderStyle);
        GUI.backgroundColor = Color.red;
        if (GUILayout.Button(CustomGestureIcons.LoadRemoveIcon(), RemoveButton, GUILayout.Width(25), GUILayout.Height(25)))
        {
            RemoveItem(requirement.m_Requirement, Hand);
        }
        GUI.contentColor    = Color.white;
        GUI.backgroundColor = Color.white;
        GUILayout.Label(requirement.m_Requirement.GetName(), LabelText);

        SerializedProperty FloatProp     = InReqArrayElem.FindPropertyRelative("m_FloatValue");
        SerializedProperty BoolProp      = InReqArrayElem.FindPropertyRelative("m_BoolValue");
        SerializedProperty FingerProp    = InReqArrayElem.FindPropertyRelative("m_FingerValue");
        SerializedProperty DirectionProp = InReqArrayElem.FindPropertyRelative("m_DirectionValue");
        SerializedProperty HandAxisProp  = InReqArrayElem.FindPropertyRelative("m_HandAxisValue");

        EditorGUI.BeginChangeCheck();

        if (requirement.m_Requirement.m_DataRequirements.GetRequiresFinger())
        {
            EditorGUILayout.PropertyField(FingerProp, GUIContent.none);
        }


        if (requirement.m_Requirement.m_DataRequirements.GetRequiresHandAxis())
        {
            EditorGUILayout.PropertyField(HandAxisProp, GUIContent.none);
        }

        if (requirement.m_Requirement.m_DataRequirements.GetRequiresDirection())
        {
            EditorGUILayout.PropertyField(DirectionProp, GUIContent.none);
        }

        if (requirement.m_Requirement.m_DataRequirements.GetRequiresBool())
        {
            GUILayout.FlexibleSpace();
            EditorGUILayout.LabelField(requirement.m_Requirement.m_DataRequirements.GetLabel(), GUILayout.Width(100));
            BoolProp.boolValue = EditorGUILayout.Toggle(BoolProp.boolValue, GUILayout.Width(20));
        }

        if (requirement.m_Requirement.m_DataRequirements.GetRequiresFloat())
        {
            float FloatMin = requirement.m_Requirement.m_DataRequirements.GetFloatMin();
            float FloatMax = requirement.m_Requirement.m_DataRequirements.GetFloatMax();
            FloatProp.floatValue = EditorGUILayout.Slider(FloatProp.floatValue, FloatMin, FloatMax);
        }

        if (EditorGUI.EndChangeCheck())
        {
            InReqArrayElem.serializedObject.ApplyModifiedProperties();
        }

        EditorGUILayout.EndHorizontal();
    }