VisualElement CreateParameterVariantView(ExposedParameter param, SerializedObject serializedInspector) { VisualElement prop = new VisualElement(); prop.AddToClassList("Indent"); prop.style.display = DisplayStyle.Flex; var parameterView = overrideParameterView.CloneTree(); prop.Add(parameterView); var parameterValueField = exposedParameterFactory.GetParameterValueField(param, (newValue) => { param.value = newValue; UpdateOverrideParameter(param, newValue); }); prop.AddManipulator(new ContextualMenuManipulator(e => { e.menu.AppendAction("Reset", _ => RemoveOverride(param)); })); parameterValueField.Bind(serializedInspector); var paramContainer = parameterView.Q("Parameter"); paramContainer.Add(parameterValueField); parameterViews[param] = parameterView; if (variant.overrideParameters.Contains(param)) { AddOverrideClass(parameterView); } return(prop); }
protected void UpdateExposedParameters() { if (root == null) { return; } if (parameters == null || !root.Contains(parameters)) { parameters = new VisualElement() { name = "ExposedParameters" }; root.Add(parameters); } parameters.Clear(); bool header = true; bool showUpdateButton = false; foreach (var param in graph.exposedParameters) { if (param.settings.isHidden) { continue; } if (header) { var headerLabel = new Label("Exposed Parameters"); headerLabel.AddToClassList("Header"); parameters.Add(headerLabel); header = false; showUpdateButton = true; } VisualElement prop = new VisualElement(); prop.AddToClassList("Indent"); prop.style.display = DisplayStyle.Flex; var p = exposedParameterFactory.GetParameterValueField(param, (newValue) => { param.value = newValue; graph.NotifyExposedParameterValueChanged(param); }); prop.Add(p); parameters.Add(prop); } if (showUpdateButton) { var updateButton = new Button(() => { MixtureGraphProcessor.RunOnce(graph); graph.SaveAllTextures(false); graph.UpdateLinkedVariants(); }) { text = "Update Texture(s)" }; updateButton.AddToClassList("Indent"); updateButton.AddToClassList("UpdateTextureButton"); parameters.Add(updateButton); } }