internal VisualElement CreateGUI( ValueChangedCallback valueChangedCallback, ToggleData fieldToDraw, string labelName, out VisualElement propertyToggle, int indentLevel = 0) { var row = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel)); // Create and assign toggle as out variable here so that callers can also do additional work with enabling/disabling if needed propertyToggle = new Toggle(); row.Add((Toggle)propertyToggle, (toggle) => { toggle.value = fieldToDraw.isOn; }); if (valueChangedCallback != null) { var toggle = (Toggle)propertyToggle; toggle.OnToggleChanged(evt => valueChangedCallback(new ToggleData(evt.newValue))); } row.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow")); return(row); }
internal VisualElement CreateGUI( ValueChangedCallback valueChangedCallback, Gradient fieldToDraw, string labelName, out VisualElement propertyGradientField, int indentLevel = 0) { var objectField = new GradientField { value = fieldToDraw }; if (valueChangedCallback != null) { objectField.RegisterValueChangedCallback(evt => { valueChangedCallback((Gradient)evt.newValue); }); } propertyGradientField = objectField; // Any core widgets used by the inspector over and over should come from some kind of factory var defaultRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel)); defaultRow.Add(propertyGradientField); defaultRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow")); return(defaultRow); }
internal VisualElement CreateGUI( ValueChangedCallback valueChangedCallback, int fieldToDraw, string labelName, out VisualElement propertyFloatField, int indentLevel = 0) { var integerField = new IntegerField { value = fieldToDraw }; if (valueChangedCallback != null) { integerField.RegisterValueChangedCallback(evt => { valueChangedCallback(evt.newValue); }); } propertyFloatField = integerField; var defaultRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel)); defaultRow.Add(propertyFloatField); defaultRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow")); return(defaultRow); }
internal VisualElement CreateGUI( ValueChangedCallback valueChangedCallback, string fieldToDraw, string labelName, out VisualElement propertyTextField, int indentLevel = 0) { var propertyRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel)); propertyTextField = new TextField(512, false, false, ' ') { isDelayed = true }; propertyRow.Add((TextField)propertyTextField, textField => { textField.value = fieldToDraw; }); if (valueChangedCallback != null) { var textField = (TextField)propertyTextField; textField.RegisterValueChangedCallback(evt => valueChangedCallback(evt.newValue)); } propertyRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow")); return(propertyRow); }
internal VisualElement CreateGUI( ValueChangedCallback valueChangedCallback, Matrix4x4 fieldToDraw, string labelName, out VisualElement propertyMatrixField, int indentLevel = 0) { var propertySheet = new PropertySheet(); switch (dimension) { case MatrixDimensions.Two: HandleMatrix2Property(valueChangedCallback, propertySheet, fieldToDraw, labelName); break; case MatrixDimensions.Three: HandleMatrix3Property(valueChangedCallback, propertySheet, fieldToDraw, labelName); break; case MatrixDimensions.Four: HandleMatrix4Property(valueChangedCallback, propertySheet, fieldToDraw, labelName); break; } propertyMatrixField = propertySheet; return(propertyMatrixField); }
public void RemovePropertyChangedHandler <TValue>(string valueName, ValueChangedCallback <TValue> callback) { if (subscribers.TryGetValue(valueName, out var list)) { list.Remove(callback); } if (list?.Count == 0) { subscribers.Remove(valueName); } }
public void AddPropertyChangedHandler <TValue>(string valueName, ValueChangedCallback <TValue> callback) { if (!subscribers.TryGetValue(valueName, out var list)) { list = new List <Delegate>(); subscribers.Add(valueName, list); } if (list.Contains(callback)) { return; } list.Add(callback); }
internal VisualElement CreateGUI( ValueChangedCallback valueChangedCallback, IEnumerable <string> fieldToDraw, string labelName, out VisualElement textArrayField, int indentLevel = 0) { var propertyRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel)); textArrayField = new PopupField <string>(fieldToDraw.ToList(), 0); propertyRow.Add(textArrayField); var popupField = (PopupField <string>)textArrayField; popupField.RegisterValueChangedCallback(evt => { valueChangedCallback(popupField.index); }); propertyRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow")); return(propertyRow); }
internal VisualElement CreateGUI( ValueChangedCallback valueChangedCallback, Vector4 fieldToDraw, string labelName, out VisualElement propertyVec4Field, int indentLevel = 0) { var vector4Field = new Vector4Field { value = fieldToDraw }; var inputFields = vector4Field.Query("unity-text-input").ToList(); foreach (var inputField in inputFields) { inputField.RegisterCallback <KeyDownEvent>(m_KeyDownCallback); inputField.RegisterCallback <FocusOutEvent>(m_FocusOutCallback); } vector4Field.RegisterValueChangedCallback(evt => { // Only true when setting value via FieldMouseDragger // Undo recorded once per dragger release if (mUndoGroup == -1) { preValueChangeCallback?.Invoke(); } valueChangedCallback(evt.newValue); postValueChangeCallback?.Invoke(); }); propertyVec4Field = vector4Field; var defaultRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel)); defaultRow.Add(propertyVec4Field); defaultRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow")); return(defaultRow); }
internal VisualElement CreateGUI( ValueChangedCallback valueChangedCallback, Color fieldToDraw, string labelName, out VisualElement propertyColorField, int indentLevel = 0) { var colorField = new ColorField { value = fieldToDraw, showEyeDropper = false, hdr = false }; if (valueChangedCallback != null) { colorField.RegisterValueChangedCallback(evt => { valueChangedCallback((Color)evt.newValue); }); } propertyColorField = colorField; var defaultRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel)); defaultRow.Add(propertyColorField); return(defaultRow); }
internal VisualElement CreateGUI( ValueChangedCallback valueChangedCallback, Enum fieldToDraw, string labelName, Enum defaultValue, out VisualElement propertyVisualElement, int indentLevel = 0) { var row = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel)); propertyVisualElement = new EnumField(defaultValue); row.Add((EnumField)propertyVisualElement, (field) => { field.value = fieldToDraw; }); if (valueChangedCallback != null) { var enumField = (EnumField)propertyVisualElement; enumField.RegisterValueChangedCallback(evt => valueChangedCallback(evt.newValue)); } return(row); }
internal VisualElement CreateGUI( ValueChangedCallback valueChangedCallback, Texture2DArray fieldToDraw, string labelName, out VisualElement propertyColorField, int indentLevel = 0) { var objectField = new ObjectField { value = fieldToDraw, objectType = typeof(Texture2DArray) }; if (valueChangedCallback != null) { objectField.RegisterValueChangedCallback(evt => { valueChangedCallback((Texture2DArray)evt.newValue); }); } propertyColorField = objectField; var defaultRow = new PropertyRow(PropertyDrawerUtils.CreateLabel(labelName, indentLevel)); defaultRow.Add(propertyColorField); defaultRow.styleSheets.Add(Resources.Load <StyleSheet>("Styles/PropertyRow")); return(defaultRow); }
public static void Show(ObjectPickerContext context, UnityObjectDescription[] objectDescriptions, WrappedVariable variable, ValueChangedCallback onValueChanged) { RemoteObjectPickerWindow window = EditorWindow.GetWindow <RemoteObjectPickerWindow>(true); window.context = context; window.objectDescriptions = objectDescriptions; window.variable = variable; window.onValueChanged = onValueChanged; if (variable != null) { window.index = objectDescriptions.Select(item => item.Guid).ToList().IndexOf((Guid)variable.Value) + 1; } window.titleContent = new GUIContent("Select Object"); window.ShowUtility(); }
void HandleMatrix2Property( ValueChangedCallback valueChangedCallback, PropertySheet propertySheet, Matrix4x4 matrix2Property, string labelName = "Default") { var vector2PropertyDrawer = new Vector2PropertyDrawer(); vector2PropertyDrawer.preValueChangeCallback = PreValueChangeCallback; vector2PropertyDrawer.postValueChangeCallback = PostValueChangeCallback; propertySheet.Add(vector2PropertyDrawer.CreateGUI( newValue => { Vector2 row1 = MatrixRowFetchCallback(1); valueChangedCallback(new Matrix4x4() { m00 = newValue.x, m01 = newValue.y, m02 = 0, m03 = 0, m10 = row1.x, m11 = row1.y, m12 = 0, m13 = 0, m20 = 0, m21 = 0, m22 = 0, m23 = 0, m30 = 0, m31 = 0, m32 = 0, m33 = 0, }); }, matrix2Property.GetRow(0), labelName, out var row0Field )); propertySheet.Add(vector2PropertyDrawer.CreateGUI( newValue => { Vector2 row0 = MatrixRowFetchCallback(0); valueChangedCallback(new Matrix4x4() { m00 = row0.x, m01 = row0.y, m02 = 0, m03 = 0, m10 = newValue.x, m11 = newValue.y, m12 = 0, m13 = 0, m20 = 0, m21 = 0, m22 = 0, m23 = 0, m30 = 0, m31 = 0, m32 = 0, m33 = 0, }); }, matrix2Property.GetRow(1), "", out var row1Field )); }