public static float GetHeight(ValueDefinition definition, VariableInitializerType initializerType, TagList tags, bool isExpanded) { var height = EditorGUIUtility.singleLineHeight; if (HasConstraint(definition.Type, definition.Constraint, definition.IsConstraintLocked)) { height += GetConstraintHeight(definition.Type, definition.Constraint); } if (HasInitializer(definition.Type, initializerType)) { if (initializerType == VariableInitializerType.Expression && definition.Initializer != null) { height += ExpressionControl.GetFoldoutHeight(definition.Initializer, isExpanded, true, 2, 3) + RectHelper.VerticalSpace; } else { height += RectHelper.LineHeight; } } if (HasTags(tags)) { height += RectHelper.LineHeight; } return(height); }
private static bool HasInitializer(VariableType type, VariableInitializerType initializer) { if (initializer == VariableInitializerType.None) { return(false); } switch (type) { case VariableType.Bool: case VariableType.Float: case VariableType.Int: case VariableType.Int2: case VariableType.Int3: case VariableType.IntRect: case VariableType.IntBounds: case VariableType.Vector2: case VariableType.Vector3: case VariableType.Vector4: case VariableType.Quaternion: case VariableType.Rect: case VariableType.Bounds: case VariableType.Color: case VariableType.String: return(true); default: return(false); } }
public override void Setup(VariableSchema target, SerializedProperty property, FieldInfo fieldInfo, PropertyAttribute attribute) { _owner = property.serializedObject.targetObject; _schema = target; _proxy = new DefinitionsProxy { Schema = target }; List.Setup(_proxy) .MakeDrawable(DrawDefinition) .MakeRemovable(_removeDefinitionButton, RemoveDefinition) .MakeCollapsable(property.serializedObject.targetObject.GetType().Name + "." + property.propertyPath + ".IsOpen") .MakeReorderable() .MakeHeaderButton(_addDefinitionButton, new AddPopup(new AddVariableContent(this), _addDefinitionLabel), Color.white) .MakeCustomHeight(GetDefinitionHeight) .MakeEmptyLabel(_emptyLabel); _type = TypeHelper.GetAttribute <VariableInitializerAttribute>(fieldInfo)?.Type ?? VariableInitializerType.Expression; _availabilities = TypeHelper.GetAttribute <VariableAvailabilitiesAttribute>(fieldInfo)?.Availabilities; }
public VariableInitializerAttribute(VariableInitializerType type) => Type = type;
public static ValueDefinition Draw(Rect position, GUIContent label, ValueDefinition definition, VariableInitializerType initializer, TagList tags, bool showConstraintLabel, ref bool isExpanded) { var tag = definition.Tag; var constraint = definition.Constraint; var hasInitializer = HasInitializer(definition.Type, initializer); var hasConstraint = HasConstraint(definition.Type, definition.Constraint, definition.IsConstraintLocked); var hasTag = HasTags(tags); var typeRect = RectHelper.TakeLine(ref position); if (label != GUIContent.none) { var labelRect = RectHelper.TakeWidth(ref typeRect, RectHelper.CurrentLabelWidth); EditorGUI.LabelField(labelRect, label); } var type = DrawType(typeRect, definition.IsTypeLocked, definition.Type); if (hasConstraint) { var constraintHeight = GetConstraintHeight(definition.Type, definition.Constraint); var constraintRect = RectHelper.TakeHeight(ref position, constraintHeight); DrawConstraint(constraintRect, type, definition.IsConstraintLocked, ref constraint, showConstraintLabel); } if (hasInitializer && definition.Initializer != null) { if (initializer == VariableInitializerType.Expression) { var initializerHeight = ExpressionControl.GetFoldoutHeight(definition.Initializer, isExpanded, true, 2, 3); var initializerRect = RectHelper.TakeHeight(ref position, initializerHeight); RectHelper.TakeVerticalSpace(ref position); DrawInitializer(initializerRect, ref definition, ref isExpanded); } else if (initializer == VariableInitializerType.DefaultValue) { var initializerRect = RectHelper.TakeLine(ref position); DrawDefaultValue(initializerRect, ref definition); } } if (hasTag) { var tagRect = RectHelper.TakeLine(ref position); tag = DrawTag(tagRect, tag, tags); } return(ValueDefinition.Create(type, constraint, tag, definition.Initializer, definition.IsTypeLocked, definition.IsConstraintLocked)); }
public static ValueDefinition Draw(GUIContent label, ValueDefinition definition, VariableInitializerType initializer, TagList tags, bool showConstraintLabel, ref bool isExpanded) { var rect = EditorGUILayout.GetControlRect(false, GetHeight(definition, initializer, tags, false)); return(Draw(rect, label, definition, initializer, tags, showConstraintLabel, ref isExpanded)); }