Example #1
0
        private static VariableValue DrawList(Rect rect, VariableValue value, ListVariableConstraint constraint, bool drawStores)
        {
            var itemDefinition = constraint != null
                                ? ValueDefinition.Create(constraint.ItemType, constraint.ItemConstraint)
                                : ValueDefinition.Create(VariableType.Empty);

            var remove = -1;

            for (var i = 0; i < value.List.Count; i++)
            {
                if (i != 0)
                {
                    RectHelper.TakeVerticalSpace(ref rect);
                }

                var item       = value.List.GetVariable(i);
                var height     = GetHeight(item, itemDefinition, drawStores);
                var itemRect   = RectHelper.TakeHeight(ref rect, height);
                var removeRect = RectHelper.TakeTrailingIcon(ref itemRect);

                item = Draw(itemRect, GUIContent.none, item, itemDefinition, drawStores);
                value.List.SetVariable(i, item);

                if (GUI.Button(removeRect, _removeListButton.Content, GUIStyle.none))
                {
                    remove = i;
                }
            }

            var addRect = RectHelper.TakeTrailingIcon(ref rect);

            if (GUI.Button(addRect, _addListButton.Content, GUIStyle.none))
            {
                value.List.AddVariable(itemDefinition.Generate(null));
            }

            if (remove >= 0)
            {
                value.List.RemoveVariable(remove);
            }

            return(value);
        }
Example #2
0
        private static void DrawListConstraint(Rect rect, ref VariableConstraint constraint)
        {
            if (!(constraint is ListVariableConstraint listConstraint))
            {
                listConstraint = new ListVariableConstraint {
                    ItemType = VariableType.Empty, ItemConstraint = null
                };
                constraint = listConstraint;
            }

            var typeRect = RectHelper.TakeLine(ref rect);

            listConstraint.ItemType = (VariableType)EditorGUI.EnumPopup(typeRect, listConstraint.ItemType);

            if (HasConstraint(listConstraint.ItemType, listConstraint.ItemConstraint, false))
            {
                DrawConstraint(rect, listConstraint.ItemType, false, ref listConstraint.ItemConstraint, false);
            }
        }
Example #3
0
        public static float GetListHeight(VariableValue value, ListVariableConstraint constraint, bool drawStores)
        {
            var height = EditorGUIUtility.singleLineHeight;

            var itemDefinition = constraint != null
                                ? ValueDefinition.Create(constraint.ItemType, constraint.ItemConstraint)
                                : ValueDefinition.Create(VariableType.Empty);

            for (var i = 0; i < value.List.Count; i++)
            {
                if (i != 0)
                {
                    height += EditorGUIUtility.standardVerticalSpacing;
                }

                var item = value.List.GetVariable(i);
                height += GetHeight(item, itemDefinition, drawStores);
            }

            return(height);
        }