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();
        }
Beispiel #2
0
        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;
                }
            }
        }