Added Unity project files

This commit is contained in:
2026-06-07 16:58:24 +01:00
parent 3cc05d260b
commit 23bbcab156
3942 changed files with 453676 additions and 0 deletions

View File

@ -0,0 +1,98 @@
using System;
using JetBrains.Annotations;
using UnityEditor;
using UnityEngine;
using VRC.Udon.Editor.ProgramSources;
using VRC.Udon.Editor.ProgramSources.Attributes;
[assembly: UdonProgramSourceNewMenu(typeof(UdonAssemblyProgramAsset), "Udon Assembly Program Asset")]
namespace VRC.Udon.Editor.ProgramSources
{
[CreateAssetMenu(menuName = "VRChat/Udon/Udon Assembly Program Asset", fileName = "New Udon Assembly Program Asset")]
public class UdonAssemblyProgramAsset : UdonProgramAsset
{
[SerializeField]
protected string udonAssembly = "";
[SerializeField]
protected string assemblyError = null;
public string AssemblyError => assemblyError;
public delegate void AssembleDelegate(bool success, string assembly);
public event AssembleDelegate OnAssemble;
protected override void DrawProgramSourceGUI(UdonBehaviour udonBehaviour, ref bool dirty)
{
DrawAssemblyErrorTextArea();
DrawPublicVariables(udonBehaviour, ref dirty);
DrawAssemblyTextArea(!Application.isPlaying, ref dirty);
DrawProgramDisassembly();
}
protected override void RefreshProgramImpl()
{
AssembleProgram();
}
[PublicAPI]
protected virtual void DrawAssemblyTextArea(bool allowEditing, ref bool dirty)
{
EditorGUILayout.LabelField("Assembly Code", EditorStyles.boldLabel);
if(GUILayout.Button("Copy Assembly To Clipboard"))
{
EditorGUIUtility.systemCopyBuffer = udonAssembly;
}
EditorGUI.BeginChangeCheck();
using(new EditorGUI.DisabledScope(!allowEditing))
{
string newAssembly = EditorGUILayout.TextArea(udonAssembly);
if(EditorGUI.EndChangeCheck())
{
dirty = true;
Undo.RecordObject(this, "Edit Assembly Program Code");
udonAssembly = newAssembly;
UdonEditorManager.Instance.QueueAndRefreshProgram(this);
}
}
}
[PublicAPI]
protected void DrawAssemblyErrorTextArea()
{
if(string.IsNullOrEmpty(assemblyError))
{
return;
}
EditorGUILayout.LabelField("Assembly Error", EditorStyles.boldLabel);
using(new EditorGUI.DisabledScope(true))
{
EditorGUILayout.TextArea(assemblyError);
}
}
[PublicAPI]
protected void AssembleProgram()
{
try
{
program = UdonEditorManager.Instance.Assemble(udonAssembly);
assemblyError = null;
OnAssemble?.Invoke(true, udonAssembly);
}
catch(Exception e)
{
program = null;
assemblyError = e.Message;
Debug.LogException(e);
OnAssemble?.Invoke(false, assemblyError);
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 22203902d63dec94194fefc3e155c43b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
using UnityEditor;
namespace VRC.Udon.Editor.ProgramSources
{
[CustomEditor(typeof(UdonAssemblyProgramAsset))]
public class UdonAssemblyProgramAssetEditor : UdonProgramAssetEditor
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3df823f3ab561fc43bcb81286e14b91d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,27 @@
using System.IO;
using JetBrains.Annotations;
using UnityEditor;
using UnityEngine;
namespace VRC.Udon.Editor.ProgramSources
{
[UnityEditor.AssetImporters.ScriptedImporter(1, "uasm")]
[UsedImplicitly]
public class UdonAssemblyProgramAssetImporter : UnityEditor.AssetImporters.ScriptedImporter
{
public override void OnImportAsset(UnityEditor.AssetImporters.AssetImportContext ctx)
{
UdonAssemblyProgramAsset udonAssemblyProgramAsset = ScriptableObject.CreateInstance<UdonAssemblyProgramAsset>();
SerializedObject serializedUdonAssemblyProgramAsset = new SerializedObject(udonAssemblyProgramAsset);
SerializedProperty udonAssemblyProperty = serializedUdonAssemblyProgramAsset.FindProperty("udonAssembly");
udonAssemblyProperty.stringValue = File.ReadAllText(ctx.assetPath);
serializedUdonAssemblyProgramAsset.ApplyModifiedProperties();
udonAssemblyProgramAsset.RefreshProgram();
ctx.AddObjectToAsset("Imported Udon Assembly Program", udonAssemblyProgramAsset);
ctx.SetMainObject(udonAssemblyProgramAsset);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3c0638314c289c24193b47d1c53c9fca
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: