using UnityEngine; using UnityEditor; using System; namespace UDE_HAND_INTERACTION { [CustomEditor(typeof(HandInteractor))] public class HandInteractorEditor : Editor { HandInteractor handInteractor { get { return target as HandInteractor; } } public float ActiveRange; public GameObject RecordedTarget; public override void OnInspectorGUI() { base.OnInspectorGUI(); ActiveRangeSetting(); handInteractor.FingerInteractData.ShortcutKeyCode = (KeyCode)EditorGUILayout.EnumPopup("Shortcut Key Code", handInteractor.FingerInteractData.ShortcutKeyCode); RecordInteractionButton(); RecordStaticPoseButton(); EditorGUILayout.Separator(); if (GUI.changed) { EditorUtility.SetDirty(handInteractor); } } void ActiveRangeSetting() { ActiveRange = EditorGUILayout.FloatField("Active Range", handInteractor.ActiveRange); handInteractor.GetComponentInChildren().radius = ActiveRange; handInteractor.ActiveRange = ActiveRange; } void RecordInteractionButton() { GUILayout.Space(10); if (GUILayout.Button("Create Realtime Hand Interaction")) { handInteractor.RecordInteractionButton(); } } void RecordStaticPoseButton() { GUILayout.Space(5); if (GUILayout.Button("Create Static Hand Pose")) { handInteractor.RecordStaticPoseButton(); } } private void OnSceneGUI() { Transform detectArea = handInteractor.DetectArea; if (detectArea == null) { detectArea = handInteractor.transform.Find("DetectArea").transform; } int sign = handInteractor.handness == HandInteractor.Handness.Left ? 1 : -1; Debug.DrawRay(detectArea.position, detectArea.forward, Color.blue); Debug.DrawRay(detectArea.position, detectArea.forward + sign * detectArea.right, Color.magenta); Debug.DrawRay(detectArea.position, sign * detectArea.right, Color.red); Debug.DrawRay(detectArea.position, sign * detectArea.right - detectArea.forward, Color.green); Debug.DrawRay(detectArea.position, sign * detectArea.right + (float)Math.Sqrt(3) * detectArea.up, Color.cyan); Debug.DrawRay(detectArea.position, sign * detectArea.right - (float)Math.Sqrt(3) * detectArea.up, Color.yellow); } } }