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