Add VRChat and GitHub packages to Unity project

This commit is contained in:
gunnbr committed 2021-01-18 09:14:18 -08:00
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();
}
}
}