public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { EditorGUI.BeginProperty(position, label, property); InitializeUnfold(property); Rect rowRect = new Rect(position.x, position.y, position.width, EditorConstants.ROW_HEIGHT); _unfolds[property.propertyPath] = EditorGUI.Foldout(rowRect, _unfolds[property.propertyPath], label, true); if (_unfolds[property.propertyPath]) { EditorGUI.indentLevel++; for (int i = 0; i < Constants.NUM_FINGERS; i++) { rowRect.y += EditorConstants.ROW_HEIGHT; SerializedProperty finger = property.FindPropertyRelative(FINGER_PROPERTY_NAMES[i]); HandFinger fingerID = (HandFinger)i; FingerRequirement current = (FingerRequirement)finger.intValue; FingerRequirement selected = (FingerRequirement)EditorGUI.EnumPopup(rowRect, $"{fingerID}: ", current); finger.intValue = (int)selected; } rowRect.y += EditorConstants.ROW_HEIGHT; DrawFlagProperty <FingerUnselectMode>(property, rowRect, "Unselect Mode", "_unselectMode", false); EditorGUI.indentLevel--; } EditorGUI.EndProperty(); }
public FingerRequirement this[HandFinger fingerID] { get { switch (fingerID) { case HandFinger.Thumb: return(_thumbRequirement); case HandFinger.Index: return(_indexRequirement); case HandFinger.Middle: return(_middleRequirement); case HandFinger.Ring: return(_ringRequirement); case HandFinger.Pinky: return(_pinkyRequirement); } return(FingerRequirement.Ignored); } set { switch (fingerID) { case HandFinger.Thumb: _thumbRequirement = value; break; case HandFinger.Index: _indexRequirement = value; break; case HandFinger.Middle: _middleRequirement = value; break; case HandFinger.Ring: _ringRequirement = value; break; case HandFinger.Pinky: _pinkyRequirement = value; break; } } }