Add VRChat and GitHub packages to Unity project
This commit is contained in:
1 parent
0334a52b21
commit
85538aaccc
3297 files changed
+847877
No files matched your search
@@ -0,0 +1,57 @@
|
||||
using EditorUI = UnityEditor.Experimental.UIElements;
|
||||
|
||||
using VRC.Udon.Graph;
|
||||
using UnityEngine.Experimental.UIElements;
|
||||
using VRC.Udon.Serialization;
|
||||
|
||||
namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView
|
||||
{
|
||||
public class UdonParameterField : EditorUI.GraphView.BlackboardField
|
||||
{
|
||||
private UdonGraph udonGraph;
|
||||
private UdonNodeData nodeData;
|
||||
public UdonNodeData Data => nodeData;
|
||||
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
void BuildContextualMenu(ContextualMenuPopulateEvent evt)
|
||||
{
|
||||
evt.menu.AppendAction("Rename", (a) => OpenTextEditor(), DropdownMenu.MenuAction.AlwaysEnabled);
|
||||
evt.menu.AppendAction("Delete", (a) => udonGraph.RemoveNodeData(nodeData), DropdownMenu.MenuAction.AlwaysEnabled);
|
||||
|
||||
evt.StopPropagation();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user