12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using System;
- using System.Collections.Generic;
- using UnityEditor.UIElements;
- using UnityEngine.UIElements;
- using UnityEditor.Graphing.Util;
- using UnityEditor.ShaderGraph.Drawing;
-
- namespace UnityEditor.ShaderGraph
- {
- [GenerationAPI]
- internal class TargetPropertyGUIContext : VisualElement
- {
- const int kIndentWidthInPixel = 15;
-
- public int globalIndentLevel { get; set; } = 0;
-
- public readonly Action graphValidation;
-
- public TargetPropertyGUIContext(Action graphValidationCallback)
- {
- graphValidation = graphValidationCallback;
- }
-
- public void AddProperty<T>(string label, BaseField<T> field, bool condition, EventCallback<ChangeEvent<T>> evt)
- {
- if (condition == true)
- {
- AddProperty<T>(label, field, evt);
- }
- }
-
- public void AddProperty<T>(string label, int indentLevel, BaseField<T> field, bool condition, EventCallback<ChangeEvent<T>> evt)
- {
- if (condition == true)
- {
- AddProperty<T>(label, indentLevel, field, evt);
- }
- }
-
- public void AddProperty<T>(string label, BaseField<T> field, EventCallback<ChangeEvent<T>> evt)
- {
- AddProperty<T>(label, 0, field, evt);
- }
-
- public void AddProperty<T>(string label, int indentLevel, BaseField<T> field, EventCallback<ChangeEvent<T>> evt)
- {
- AddProperty<T>(label, string.Empty, indentLevel, field, evt);
- }
-
- public void AddProperty<T>(string label, string tooltip, int indentLevel, BaseField<T> field, EventCallback<ChangeEvent<T>> evt)
- {
- if (field is INotifyValueChanged<T> notifyValueChanged)
- {
- notifyValueChanged.RegisterValueChangedCallback(evt);
- }
-
- var propertyLabel = new Label(label);
- propertyLabel.tooltip = tooltip;
- var propertyRow = new PropertyRow(propertyLabel);
-
- ApplyPadding(propertyRow, indentLevel);
- propertyRow.Add(field);
- this.hierarchy.Add(propertyRow);
- }
-
- public void AddLabel(string label, int indentLevel)
- {
- var propertyRow = new PropertyRow(new Label(label));
- ApplyPadding(propertyRow, indentLevel);
- this.hierarchy.Add(propertyRow);
- }
-
- public void AddHelpBox(MessageType messageType, string messageText)
- {
- var helpBox = new HelpBoxRow(messageType);
- helpBox.Add(new Label(messageText));
- this.hierarchy.Add(helpBox);
- }
-
- void ApplyPadding(PropertyRow row, int indentLevel)
- {
- row.Q(className: "unity-label").style.marginLeft = (globalIndentLevel + indentLevel) * kIndentWidthInPixel;
- }
- }
- }
|