public UdonParameterField(UdonGraph udonGraph, UdonNodeData nodeData) { this.udonGraph = udonGraph; this.nodeData = nodeData; // Get Definition or exit early UdonNodeDefinition definition = UdonEditorManager.Instance.GetNodeDefinition(nodeData.fullName); if (definition == null) { UnityEngine.Debug.LogWarning($"Couldn't create Parameter Field for {nodeData.fullName}"); return; } this.text = (string)nodeData.nodeValues[(int)UdonParameterProperty.ValueIndices.name].Deserialize(); this.typeText = UdonGraphExtensions.PrettyString(definition.name).FriendlyNameify(); this.AddManipulator(new ContextualMenuManipulator(BuildContextualMenu)); this.Q("icon").AddToClassList("parameter-" + definition.type); this.Q("icon").visible = true; var textField = (TextField)this.Q("textField"); textField.isDelayed = true; }
public UdonParameterField(UdonGraph udonGraph, UdonNodeData nodeData) { this.udonGraph = udonGraph; this.nodeData = nodeData; // Get Definition or exit early UdonNodeDefinition definition = UdonEditorManager.Instance.GetNodeDefinition(nodeData.fullName); if (definition == null) { UnityEngine.Debug.LogWarning($"Couldn't create Parameter Field for {nodeData.fullName}"); return; } this.text = (string)nodeData.nodeValues[(int)UdonParameterProperty.ValueIndices.name].Deserialize(); this.typeText = UdonGraphExtensions.PrettyString(definition.name).FriendlyNameify(); this.AddManipulator(new ContextualMenuManipulator(BuildContextualMenu)); this.Q("icon").AddToClassList("parameter-" + definition.type); this.Q("icon").visible = true; var textField = (TextField)this.Q("textField"); textField.isDelayed = true; textField.OnValueChanged((e) => { UnityEditor.Undo.RecordObject(udonGraph.graphProgramAsset, "Rename Variable"); // Sanitize value for variable name string newVariableName = e.newValue.SanitizeVariableName(); text = newVariableName; nodeData.nodeValues[(int)UdonParameterProperty.ValueIndices.name] = SerializableObjectContainer.Serialize(newVariableName); }); }