diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta new file mode 100644 index 0000000..fb8f959 --- /dev/null +++ b/Assets/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 720712be6e31c444f88f57bb85bf5fa5 +folderAsset: yes +timeCreated: 1504268238 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub.meta b/Assets/Plugins/GitHub.meta new file mode 100644 index 0000000..cf5b062 --- /dev/null +++ b/Assets/Plugins/GitHub.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 18e096a98c2704c40a818dd1214cd179 +folderAsset: yes +timeCreated: 1503666358 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor.meta b/Assets/Plugins/GitHub/Editor.meta new file mode 100644 index 0000000..b55a61a --- /dev/null +++ b/Assets/Plugins/GitHub/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cad92998c5182496e8b989b406d9f156 +folderAsset: yes +timeCreated: 1503666365 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/AsyncBridge.Net35.dll b/Assets/Plugins/GitHub/Editor/AsyncBridge.Net35.dll new file mode 100644 index 0000000..a841e28 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/AsyncBridge.Net35.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f61d9c0550c3a1e36e6eaa9bebbc3b5ca701c4e960dc2a92746df792d392140 +size 26112 diff --git a/Assets/Plugins/GitHub/Editor/AsyncBridge.Net35.dll.meta b/Assets/Plugins/GitHub/Editor/AsyncBridge.Net35.dll.meta new file mode 100644 index 0000000..b5a2737 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/AsyncBridge.Net35.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: d516f2a1bec6a9645a084ef8c9237132 +timeCreated: 1491391262 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/ExtensionLoader.cs b/Assets/Plugins/GitHub/Editor/ExtensionLoader.cs new file mode 100644 index 0000000..f3a7e9e --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/ExtensionLoader.cs @@ -0,0 +1,93 @@ +using UnityEditor; +using UnityEngine; +using System.IO; +using System; + +namespace GitHub.Unity +{ + [InitializeOnLoad] + public class ExtensionLoader : ScriptableSingleton + { + [SerializeField] private bool initialized = true; + + public bool Initialized + { + get + { + return initialized; + } + set + { + initialized = value; + Save(true); + } + } + + private static bool inSourceMode = false; + private const string sourceModePath = "Assets/Editor/build/"; + private const string realPath = "Assets/Plugins/GitHub/Editor/"; + + private static string[] assemblies20 = { "System.Threading.dll", "AsyncBridge.Net35.dll", "ReadOnlyCollectionsInterfaces.dll", "GitHub.Api.dll", "GitHub.Unity.dll" }; + private static string[] assemblies45 = { "GitHub.Api.45.dll", "GitHub.Unity.45.dll" }; + + private const string GITHUB_UNITY_DISABLE = "GITHUB_UNITY_DISABLE"; + private static bool IsDisabled { get { return Environment.GetEnvironmentVariable(GITHUB_UNITY_DISABLE) == "1"; } } + + static ExtensionLoader() + { + if (IsDisabled) + { + return; + } + EditorApplication.update += Initialize; + } + + private static void Initialize() + { + EditorApplication.update -= Initialize; + + // we're always doing this right now because if the plugin gets updated all the meta files will be disabled and we need to re-enable them + // we should probably detect if our assets change and re-run this instead of doing it every time + //if (!ExtensionLoader.instance.Initialized) + { + var scriptPath = Path.Combine(Application.dataPath, "Editor" + Path.DirectorySeparatorChar + "GitHub.Unity" + Path.DirectorySeparatorChar + "EntryPoint.cs"); + inSourceMode = File.Exists(scriptPath); + ToggleAssemblies(); + //ExtensionLoader.instance.Initialized = true; + AssetDatabase.SaveAssets(); + } + + } + + private static void ToggleAssemblies() + { + var path = inSourceMode ? sourceModePath : realPath; +#if NET_4_6 + ToggleAssemblies(path, assemblies20, false); + ToggleAssemblies(path, assemblies45, true); +#else + ToggleAssemblies(path, assemblies45, false); + ToggleAssemblies(path, assemblies20, true); +#endif + } + + private static void ToggleAssemblies(string path, string[] assemblies, bool enable) + { + foreach (var file in assemblies) + { + var filepath = path + file; + PluginImporter importer = AssetImporter.GetAtPath(filepath) as PluginImporter; + if (importer == null) + { + Debug.LogFormat("GitHub for Unity: Could not find importer for {0}. Some functionality may fail.", filepath); + continue; + } + if (importer.GetCompatibleWithEditor() != enable) + { + importer.SetCompatibleWithEditor(enable); + importer.SaveAndReimport(); + } + } + } + } +} diff --git a/Assets/Plugins/GitHub/Editor/ExtensionLoader.cs.meta b/Assets/Plugins/GitHub/Editor/ExtensionLoader.cs.meta new file mode 100644 index 0000000..305eca1 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/ExtensionLoader.cs.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: dae2ecee8a704dd59797e26554ff8606 +timeCreated: 1534504082 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/GitHub.Api.45.dll b/Assets/Plugins/GitHub/Editor/GitHub.Api.45.dll new file mode 100644 index 0000000..1fb9af3 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.Api.45.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f88b65d56d7542c171548019eb408ae2b9ff10aa54657d71eddc2499384f856 +size 750592 diff --git a/Assets/Plugins/GitHub/Editor/GitHub.Api.45.dll.meta b/Assets/Plugins/GitHub/Editor/GitHub.Api.45.dll.meta new file mode 100644 index 0000000..af551e2 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.Api.45.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: c743ae24ee231884887054d20ccdd0ab +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/GitHub.Api.dll b/Assets/Plugins/GitHub/Editor/GitHub.Api.dll new file mode 100644 index 0000000..1cf80d4 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.Api.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0598ee39acaec9732f0a00bd20528f07855a5298c67f53957bc6ad258c42d815 +size 750080 diff --git a/Assets/Plugins/GitHub/Editor/GitHub.Api.dll.meta b/Assets/Plugins/GitHub/Editor/GitHub.Api.dll.meta new file mode 100644 index 0000000..5df9562 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.Api.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: c743ae24ee231884887054d20ccdd0ae +timeCreated: 1491391261 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/GitHub.Logging.dll b/Assets/Plugins/GitHub/Editor/GitHub.Logging.dll new file mode 100644 index 0000000..2e9b2e9 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.Logging.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e495cb21943c4ea67673c11db54e737d25fd2aa00ef1af37d1df7ccba026759b +size 11776 diff --git a/Assets/Plugins/GitHub/Editor/GitHub.Logging.dll.meta b/Assets/Plugins/GitHub/Editor/GitHub.Logging.dll.meta new file mode 100644 index 0000000..a946eb4 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.Logging.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 15ca2bebf173f2d4484686a03a45b56d +timeCreated: 1491391259 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/GitHub.Unity.45.dll b/Assets/Plugins/GitHub/Editor/GitHub.Unity.45.dll new file mode 100644 index 0000000..997103d --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.Unity.45.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4abacb70e20c2f22a43d9cff198f7709f6601f7e3ff4f0aeb6f0f3b9dd7d74ba +size 299520 diff --git a/Assets/Plugins/GitHub/Editor/GitHub.Unity.45.dll.meta b/Assets/Plugins/GitHub/Editor/GitHub.Unity.45.dll.meta new file mode 100644 index 0000000..78e9067 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.Unity.45.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 68c7e4565cde54155bb78d8e935f1ddb +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/GitHub.Unity.dll b/Assets/Plugins/GitHub/Editor/GitHub.Unity.dll new file mode 100644 index 0000000..9e5d655 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.Unity.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:966ffe7a5f4de501e439b9441fd29d7ceba3b76970f105ed331a6b385674ab3d +size 299520 diff --git a/Assets/Plugins/GitHub/Editor/GitHub.Unity.dll.meta b/Assets/Plugins/GitHub/Editor/GitHub.Unity.dll.meta new file mode 100644 index 0000000..c93fc9d --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.Unity.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 68c7e4565cde54155bb78d8e935f1dd4 +timeCreated: 1527097377 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/GitHub.UnityShim.dll b/Assets/Plugins/GitHub/Editor/GitHub.UnityShim.dll new file mode 100644 index 0000000..cdce79e --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.UnityShim.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:409891774be0755c72effe01a3f47157858ce19fe8cba7e68c913acf0671ed75 +size 5120 diff --git a/Assets/Plugins/GitHub/Editor/GitHub.UnityShim.dll.meta b/Assets/Plugins/GitHub/Editor/GitHub.UnityShim.dll.meta new file mode 100644 index 0000000..1aeac20 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/GitHub.UnityShim.dll.meta @@ -0,0 +1,30 @@ +fileFormatVersion: 2 +guid: 863e1b9976c4e46d29bf83928b3a8ab2 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/Mono.Posix.dll b/Assets/Plugins/GitHub/Editor/Mono.Posix.dll new file mode 100644 index 0000000..6e6503e --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/Mono.Posix.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bda42c2c2c6d83a5c840d5262bfb1ae0e24e3c1778c96d5ea1ff96a1bb244f70 +size 184320 diff --git a/Assets/Plugins/GitHub/Editor/Mono.Posix.dll.meta b/Assets/Plugins/GitHub/Editor/Mono.Posix.dll.meta new file mode 100644 index 0000000..adb4acb --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/Mono.Posix.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: ddb8611e748af425a82a497ac5a98c0c +timeCreated: 1503427590 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/QuickGuide.pdf b/Assets/Plugins/GitHub/Editor/QuickGuide.pdf new file mode 100644 index 0000000..2c1dc87 Binary files /dev/null and b/Assets/Plugins/GitHub/Editor/QuickGuide.pdf differ diff --git a/Assets/Plugins/GitHub/Editor/QuickGuide.pdf.meta b/Assets/Plugins/GitHub/Editor/QuickGuide.pdf.meta new file mode 100644 index 0000000..326adee --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/QuickGuide.pdf.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d601ecb6855bb432bae2aa49d8fd82e8 +timeCreated: 1526676893 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/ReadOnlyCollectionsInterfaces.dll b/Assets/Plugins/GitHub/Editor/ReadOnlyCollectionsInterfaces.dll new file mode 100644 index 0000000..ffca704 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/ReadOnlyCollectionsInterfaces.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64803681966f009feaab1f02278ac2a38683fc99e88b4247d54d0534f1429b55 +size 5632 diff --git a/Assets/Plugins/GitHub/Editor/ReadOnlyCollectionsInterfaces.dll.meta b/Assets/Plugins/GitHub/Editor/ReadOnlyCollectionsInterfaces.dll.meta new file mode 100644 index 0000000..4e53b83 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/ReadOnlyCollectionsInterfaces.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 48c22d5d7479fcb49ab3be0cdd2ccec0 +timeCreated: 1491391260 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/System.Threading.dll b/Assets/Plugins/GitHub/Editor/System.Threading.dll new file mode 100644 index 0000000..d005232 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/System.Threading.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25a3ec89ffc468c53a44a90ae99c23e1bcff9e5901be74033b4ce794a3202395 +size 382464 diff --git a/Assets/Plugins/GitHub/Editor/System.Threading.dll.meta b/Assets/Plugins/GitHub/Editor/System.Threading.dll.meta new file mode 100644 index 0000000..32ade23 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/System.Threading.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: 790749ba7e4b18141953e39cb13f1b79 +timeCreated: 1491392717 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/UnityAPIWrapper.cs b/Assets/Plugins/GitHub/Editor/UnityAPIWrapper.cs new file mode 100644 index 0000000..d034a91 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/UnityAPIWrapper.cs @@ -0,0 +1,20 @@ +using UnityEditor; +using UnityEngine; +using System.IO; +using System; + +namespace GitHub.Unity +{ + [InitializeOnLoad] + public class UnityAPIWrapper : ScriptableSingleton + { + static UnityAPIWrapper() + { +#if UNITY_2018_2_OR_NEWER + Editor.finishedDefaultHeaderGUI += editor => { + UnityShim.Raise_Editor_finishedDefaultHeaderGUI(editor); + }; +#endif + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/GitHub/Editor/UnityAPIWrapper.cs.meta b/Assets/Plugins/GitHub/Editor/UnityAPIWrapper.cs.meta new file mode 100644 index 0000000..c87218b --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/UnityAPIWrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 555cd6f54c03341b1970d950df1a5ee5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/big-logo@2x.png b/Assets/Plugins/GitHub/Editor/big-logo@2x.png new file mode 100644 index 0000000..9665a00 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/big-logo@2x.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e986d8a21f6f621e89885d0e4e28a9c6171e02f2c095fbeb075e22d9b0f40f74 +size 9961 diff --git a/Assets/Plugins/GitHub/Editor/big-logo@2x.png.meta b/Assets/Plugins/GitHub/Editor/big-logo@2x.png.meta new file mode 100644 index 0000000..2187da3 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/big-logo@2x.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: f81094832d834c64d93b198cb16b6a3e +timeCreated: 1491392813 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: tvOS + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/credits.txt b/Assets/Plugins/GitHub/Editor/credits.txt new file mode 100644 index 0000000..b8fb5d7 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/credits.txt @@ -0,0 +1,237 @@ +=============================================================================== +Port of Axosoft's NSFW (https://github.com/github-for-unity/sfw) +=============================================================================== + +The MIT License (MIT) + +Copyright (c) 2015 Axosoft + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +=============================================================================== +AsyncBridge (https://github.com/OmerMor/AsyncBridge) +=============================================================================== + +The MIT License (MIT) + +Copyright (c) 2015 Omer Mor + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +=============================================================================== +TaskParallelLibrary (https://www.nuget.org/packages/TaskParallelLibrary/) +=============================================================================== + +MICROSOFT SOFTWARE LICENSE TERMS + +MICROSOFT REACTIVE EXTENSIONS FOR JAVASCRIPT AND .NET LIBRARIES + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + + updates, + supplements, + Internet-based services, and + support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + +If you comply with these license terms, you have the rights below. + + INSTALLATION AND USE RIGHTS. You may install and use any number of copies of the software on your devices to design, develop and test your programs. + ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + Distributable Code.The software contains code that you are permitted to distribute in programs you develop if you comply with the terms below. + Right to Use and Distribute. The code and text files listed in the software REDIST.TXT files are "Distributable Code." + REDIST.TXT Files. You may copy and distribute the object code form of the Distributable Code. You may also combine the object code form of the Distributable Code with your programs to develop a unified web solution and permit others via online methods to access and use that unified web solution, provided that the Distributable Code is only used as part of and in conjunction with your programs. + Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + Distributable Code Requirements. For any Distributable Code, you must + add significant primary functionality to it in your programs; + require distributors and external end users to agree to terms that protect it at least as much as this agreement; + display your valid copyright notice on your programs; and + indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + Distributable Code Restrictions. You may not + alter any copyright, trademark or patent notice in the Distributable Code; + use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + include Distributable Code in malicious, deceptive or unlawful programs; or + modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + the code be disclosed or distributed in source code form; or + others have the right to modify it. + SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + work around any technical limitations in the software; + reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation; + publish the software for others to copy; + rent, lease or lend the software; or + transfer the software or this agreement to any third party. + BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + APPLICABLE LAW. + United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + Outside the United States. If you acquired the software in any other country, the laws of that country apply. + LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + + anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +=============================================================================== +dotnet-threading (https://github.com/tunnelvisionlabs/dotnet-threading) +=============================================================================== + +Copyright (c) Tunnel Vision Laboratories, LLC. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +these files except in compliance with the License. You may obtain a copy of the +License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the License. + +--- + +This project uses other open source projects, which are used under the terms +of the following license(s). + +Rackspace Threading Library + + Copyright (c) Rackspace, US Inc. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + these files except in compliance with the License. You may obtain a copy of the + License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed + under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. See the License for the + specific language governing permissions and limitations under the License. + +Microsoft .NET Reference Source + + Copyright (c) Microsoft Corporation + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +=============================================================================== +ReadOnlyCollectionInterfaces (https://www.openhub.net/p/ReadOnlyCollections) +=============================================================================== + +Apache License, Version 2.0 + +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS diff --git a/Assets/Plugins/GitHub/Editor/credits.txt.meta b/Assets/Plugins/GitHub/Editor/credits.txt.meta new file mode 100644 index 0000000..b00616a --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/credits.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0188ec438976e5849b40a2c1ce5f20f9 +timeCreated: 1491603973 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/eula.txt b/Assets/Plugins/GitHub/Editor/eula.txt new file mode 100644 index 0000000..9086de3 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/eula.txt @@ -0,0 +1,105 @@ + END-USER LICENSE AGREEMENT + +This End-User License Agreement (EULA) is a legal agreement between you (either as an individual or on behalf of an entity) and GitHub, Inc. regarding your use of GitHub® for Unity, and associated documentation (the "Software"). + +IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS EULA, DO NOT INSTALL, USE OR COPY THE SOFTWARE. + + SUMMARY + + • You must agree to all of the terms of this EULA to use this Software. + • If so, you may use the Software for free and for any lawful purpose. + • This Software automatically communicates with GitHub servers + for two reasons: (1) to send error reports; and + (2) to send anonymized usage information. You can view + sample data to see what information is sent, and you may opt out of + sending the anonymized usage data. + • This Software is provided "as-is" with no warranties, and you agree + that GitHub is not liable for anything you do with it. + • You really ought to just go ahead and read the whole EULA. + It's not all that long. You should not only rely on this summary. + + THE AGREEMENT + +By downloading, installing, using, or copying the Software, you accept and agree to be bound by the terms of this EULA. If you do not agree to all of the terms of this EULA, you may not download, install, use or copy the Software. + + THE LICENSE + +This EULA entitles you to install as many copies of the Software as you want, and use the Software for any lawful purpose consistent with this EULA. Your license to use the Software is expressly conditioned upon your agreement to all of the terms of this EULA. This software is licensed, not sold. GitHub reserves all other rights not granted by this EULA. + + THE RESTRICTIONS + + 1. When using the Software you must use it in a manner that complies + with the applicable laws in the jurisdiction(s) in which you use the + Software. + + 2. You may not sell, resell, rent, lease or exchange the Software for + anything of value. + + 3. You may redistribute the software, but it must include this EULA + and you may not repackage or bundle the Software with any + other software. + + 4. You may not remove or alter any proprietary notices or marks on + the Software. + + PRIVACY NOTICES + +The Software automatically communicates with GitHub servers for two purposes: (1) sending error reports; and (2) sending anonymized usage data so we may improve the Software. If you would like to learn more about the specific information we send, please visit https://unity.github.com/samples.html. You may opt out of sending the anonymized usage data, but if you do not want the Software to send error reports, you must uninstall the Software. + + 1. ERROR REPORTS. In order to help us improve the Software, when the + Software encounters certain errors, it will automatically send some + information to GitHub about the error (as described at the URL + above). + This feature may not be disabled. If you do not want to send error + reports to GitHub, you must uninstall the Software. + + 2. ANONYMIZED USAGE DATA. GitHub collects anonymized data about + your usage of the Software to help us make it more awesome. + Approximately once a day the Software sends such data + (as described in more detail at the URL above) to GitHub's servers. + If you do not want to send anonymized usage data to GitHub, + you may opt out by changing your settings in the + Settings dialog under the GitHub dialog. + + OPEN-SOURCE NOTICES + +Certain components of the Software may be subject to open-source software licenses ("Open-Source Components"), which means any software license approved as open-source licenses by the Open Source Initiative or any substantially similar licenses, including without limitation any license that, as a condition of distribution of the software licensed under such license, requires that the distributor make the software available in source code format. If you would like to see copies of the licenses applicable to the Open-Source Components, see CREDITS.txt. + +To the extent there is conflict between the license terms covering the Open-Source Components and this EULA, the terms of such licenses will apply in lieu of the terms of this EULA. To the extent the terms of the licenses applicable to Open-Source Components prohibit any of the restrictions in this Agreement with respect to such Open-Source Component, such restrictions will not apply to such Open-Source Component. To the extent the terms of the licenses applicable to Open-Source Components require Licensor to make an offer to provide source code in connection with the Product, such offer is hereby made, and you may exercise it by contacting support@github.com + + INTELLECTUAL PROPERTY NOTICES + +The Software and all worldwide copyrights, trade secrets, and other intellectual property rights therein are the exclusive property of GitHub. GitHub reserves all rights in and to the Software not expressly granted to you in this EULA. + +GitHub®, Atom™, their stylized versions and the Invertocat® are GitHub's Trademarks or registered Trademarks. You agree not to display or use these trademarks in any manner without GitHub's prior, written permission, except as allowed by GitHub's Logos and Usage Policy: https://github.com/logos. + + DISCLAIMERS AND LIMITATIONS ON LIABILITY + +THE SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND NO WARRANTY, EITHER EXPRESS OR IMPLIED, IS GIVEN. YOUR USE OF THE SOFTWARE IS AT YOUR SOLE RISK. GitHub does not warrant that (i) the Software will meet your specific requirements; (ii) the Software is fully compatible with any particular platform; (iii) your use of the Software will be uninterrupted, timely, secure, or error-free; (iv) the results that may be obtained from the use of the Software will be accurate or reliable; (v) the quality of any products, services, information, or other material purchased or obtained by you through the Software will meet your expectations; or (vi) any errors in the Software will be corrected. + +YOU EXPRESSLY UNDERSTAND AND AGREE THAT GITHUB SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER INTANGIBLE LOSSES (EVEN IF GITHUB HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES) RELATED TO THE SOFTWARE, including, for example: (i) the use or the inability to use the Software; (ii) the cost of procurement of substitute goods and services resulting from any goods, data, information or services purchased or obtained or messages received or transactions entered into through or from the Software; (iii) unauthorized access to or alteration of your transmissions or data; (iv) statements or conduct of any third-party on the Software; (v) or any other matter relating to the Software. + +GitHub reserves the right at any time and from time to time to modify or discontinue, temporarily or permanently, the Software (or any part thereof) with or without notice. GitHub shall not be liable to you or to any third-party for any modification, price change, suspension or discontinuance of the Software. + + MISCELLANEA + + 1. If you configure the Software to work with one or more accounts + on the GitHub.com website or with an instance of GitHub Enterprise, + your use of the Software will also be governed by the GitHub.com + website Terms of Service and/or the license agreement applicable to + your instance of GitHub Enterprise. + + 2. The failure of GitHub to exercise or enforce any right or provision + of this EULA shall not constitute a waiver of such right or provision. + + 3. This EULA constitutes the entire agreement between you and GitHub + and governs your use of the Software, superseding any prior + agreements between you and GitHub (including, but not limited to, + any prior versions of the EULA). + + 4. You agree that this EULA and your use of the Software are governed + under California law and any dispute related to the Software must + be brought in a tribunal of competent jurisdiction located in or + near San Francisco, California. + + 5. Please send any questions about this EULA to support@github.com. diff --git a/Assets/Plugins/GitHub/Editor/eula.txt.meta b/Assets/Plugins/GitHub/Editor/eula.txt.meta new file mode 100644 index 0000000..82953e6 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/eula.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 136dc24f151211d438acee17aff4e934 +timeCreated: 1491603974 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/libsfw.bundle b/Assets/Plugins/GitHub/Editor/libsfw.bundle new file mode 100644 index 0000000..878759a Binary files /dev/null and b/Assets/Plugins/GitHub/Editor/libsfw.bundle differ diff --git a/Assets/Plugins/GitHub/Editor/libsfw.bundle.meta b/Assets/Plugins/GitHub/Editor/libsfw.bundle.meta new file mode 100644 index 0000000..f64f487 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/libsfw.bundle.meta @@ -0,0 +1,106 @@ +fileFormatVersion: 2 +guid: 636d33ae594884e7d80b569f429d245d +timeCreated: 1503667182 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + OS: OSX + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/libsfw.so b/Assets/Plugins/GitHub/Editor/libsfw.so new file mode 100644 index 0000000..1590c3a Binary files /dev/null and b/Assets/Plugins/GitHub/Editor/libsfw.so differ diff --git a/Assets/Plugins/GitHub/Editor/libsfw.so.meta b/Assets/Plugins/GitHub/Editor/libsfw.so.meta new file mode 100644 index 0000000..682eaed --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/libsfw.so.meta @@ -0,0 +1,106 @@ +fileFormatVersion: 2 +guid: 21206c65839f84d0e9ae14bc1fdc68db +timeCreated: 1503931807 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + OS: Linux + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/sfw.net.dll b/Assets/Plugins/GitHub/Editor/sfw.net.dll new file mode 100644 index 0000000..2f49945 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/sfw.net.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21feeaa73e42bf03e86525bc5e1b954f4b9a2f16eed58a87c69e576509231480 +size 7168 diff --git a/Assets/Plugins/GitHub/Editor/sfw.net.dll.meta b/Assets/Plugins/GitHub/Editor/sfw.net.dll.meta new file mode 100644 index 0000000..4d483f2 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/sfw.net.dll.meta @@ -0,0 +1,34 @@ +fileFormatVersion: 2 +guid: f9fc9b08ecd899944adf9860b4abd6b6 +timeCreated: 1491392718 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/x64.meta b/Assets/Plugins/GitHub/Editor/x64.meta new file mode 100644 index 0000000..8c729a0 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/x64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a0ded7adcc817ce489fec07977f16d13 +folderAsset: yes +timeCreated: 1493304320 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/x64/pthreadVC2.dll b/Assets/Plugins/GitHub/Editor/x64/pthreadVC2.dll new file mode 100644 index 0000000..3636fec --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/x64/pthreadVC2.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e6af724609ef6846982ef717013426c359c455fff324e906d8d55c8bb88d16e +size 82944 diff --git a/Assets/Plugins/GitHub/Editor/x64/pthreadVC2.dll.meta b/Assets/Plugins/GitHub/Editor/x64/pthreadVC2.dll.meta new file mode 100644 index 0000000..083690e --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/x64/pthreadVC2.dll.meta @@ -0,0 +1,165 @@ +fileFormatVersion: 2 +guid: 868fbb4c41814baebc00f96e24ede2f8 +timeCreated: 1491391266 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86_64 + OS: Windows + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude SamsungTV: 1 + Exclude Tizen: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude WindowsStoreApps: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Samsung TV: SamsungTV + second: + enabled: 0 + settings: + STV_MODEL: STANDARD_15 + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: AnyScriptingBackend + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + data: + first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/x64/sfw_x64.dll b/Assets/Plugins/GitHub/Editor/x64/sfw_x64.dll new file mode 100644 index 0000000..be2245f --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/x64/sfw_x64.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f8d586e00ddbe3cfa0cd2446bdd416a65e6c12ef31e7f451af14867b880c0dc +size 182784 diff --git a/Assets/Plugins/GitHub/Editor/x64/sfw_x64.dll.meta b/Assets/Plugins/GitHub/Editor/x64/sfw_x64.dll.meta new file mode 100644 index 0000000..57fba57 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/x64/sfw_x64.dll.meta @@ -0,0 +1,165 @@ +fileFormatVersion: 2 +guid: fe5abeadcbe591e4fa9107fbc02f3998 +timeCreated: 1493304330 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + OS: Windows + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude SamsungTV: 1 + Exclude Tizen: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude WindowsStoreApps: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Samsung TV: SamsungTV + second: + enabled: 0 + settings: + STV_MODEL: STANDARD_15 + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: AnyScriptingBackend + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + data: + first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/x86.meta b/Assets/Plugins/GitHub/Editor/x86.meta new file mode 100644 index 0000000..3e39917 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/x86.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 99b48d4d4f6a66340ab06bd487d70a45 +folderAsset: yes +timeCreated: 1493304320 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/x86/pthreadVC2.dll b/Assets/Plugins/GitHub/Editor/x86/pthreadVC2.dll new file mode 100644 index 0000000..b90ff16 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/x86/pthreadVC2.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bac4472990c1dc2f037019791bd18888e78a3ae86605f3aae86f812a4d7d4f60 +size 55808 diff --git a/Assets/Plugins/GitHub/Editor/x86/pthreadVC2.dll.meta b/Assets/Plugins/GitHub/Editor/x86/pthreadVC2.dll.meta new file mode 100644 index 0000000..cbee276 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/x86/pthreadVC2.dll.meta @@ -0,0 +1,165 @@ +fileFormatVersion: 2 +guid: 151a1d946b98deb4b98445400983ba92 +timeCreated: 1493300307 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86 + OS: Windows + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude SamsungTV: 1 + Exclude Tizen: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude WindowsStoreApps: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Samsung TV: SamsungTV + second: + enabled: 0 + settings: + STV_MODEL: STANDARD_15 + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: AnyScriptingBackend + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + data: + first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/GitHub/Editor/x86/sfw_x86.dll b/Assets/Plugins/GitHub/Editor/x86/sfw_x86.dll new file mode 100644 index 0000000..89f9ff3 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/x86/sfw_x86.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:843682e312df272a4222e2ba85f4feebfb0195524f101ef9f636f56ae0e0af21 +size 179200 diff --git a/Assets/Plugins/GitHub/Editor/x86/sfw_x86.dll.meta b/Assets/Plugins/GitHub/Editor/x86/sfw_x86.dll.meta new file mode 100644 index 0000000..94e91b6 --- /dev/null +++ b/Assets/Plugins/GitHub/Editor/x86/sfw_x86.dll.meta @@ -0,0 +1,165 @@ +fileFormatVersion: 2 +guid: a83159a46d87d2a4f8cec651049b9231 +timeCreated: 1493304330 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: x86 + OS: Windows + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude SamsungTV: 1 + Exclude Tizen: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude WindowsStoreApps: 1 + Exclude iOS: 1 + Exclude tvOS: 1 + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Samsung TV: SamsungTV + second: + enabled: 0 + settings: + STV_MODEL: STANDARD_15 + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: AnyScriptingBackend + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + data: + first: + tvOS: tvOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes.meta b/Assets/Scenes.meta new file mode 100644 index 0000000..498cef5 --- /dev/null +++ b/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1034fb56bd98d2843b2e7563b214e163 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/ShellosDollhouse.unity b/Assets/Scenes/ShellosDollhouse.unity new file mode 100644 index 0000000..114459f --- /dev/null +++ b/Assets/Scenes/ShellosDollhouse.unity @@ -0,0 +1,259 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 170076734} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 10 + m_AtlasSize: 512 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 256 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &170076733 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 170076735} + - component: {fileID: 170076734} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &170076734 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 170076733} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &170076735 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 170076733} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &534669902 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 534669905} + - component: {fileID: 534669904} + - component: {fileID: 534669903} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &534669903 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 534669902} + m_Enabled: 1 +--- !u!20 &534669904 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 534669902} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &534669905 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 534669902} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/ShellosDollhouse.unity.meta b/Assets/Scenes/ShellosDollhouse.unity.meta new file mode 100644 index 0000000..7fbb0d0 --- /dev/null +++ b/Assets/Scenes/ShellosDollhouse.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 54097c9ef2801ed4db9dcd74be6ab870 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SerializedUdonPrograms.meta b/Assets/SerializedUdonPrograms.meta new file mode 100644 index 0000000..1434a5e --- /dev/null +++ b/Assets/SerializedUdonPrograms.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c4d1b25ea6c139149b3f96f25ca2705b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SerializedUdonPrograms/4715e20276be3b141a6a216230cab4e9.asset b/Assets/SerializedUdonPrograms/4715e20276be3b141a6a216230cab4e9.asset new file mode 100644 index 0000000..0d1cb9b --- /dev/null +++ b/Assets/SerializedUdonPrograms/4715e20276be3b141a6a216230cab4e9.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf61d954ecb803046953c666facfb904, type: 3} + m_Name: 4715e20276be3b141a6a216230cab4e9 + m_EditorClassIdentifier: + serializedProgramBytesString: Ai8AAAAAASwAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AUAByAG8AZwByAGEAbQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAACcBGAAAAEkAbgBzAHQAcgB1AGMAdABpAG8AbgBTAGUAdABJAGQAZQBuAHQAaQBmAGkAZQByAAEEAAAAVQBEAE8ATgAXARUAAABJAG4AcwB0AHIAdQBjAHQAaQBvAG4AUwBlAHQAVgBlAHIAcwBpAG8AbgABAAAAAQEIAAAAQgB5AHQAZQBDAG8AZABlAC8BAAAAARcAAABTAHkAcwB0AGUAbQAuAEIAeQB0AGUAWwBdACwAIABtAHMAYwBvAHIAbABpAGIAAQAAAAjwAAAAAQAAAAAAAAEAAAAAAAAABgAAAAsAAAABAAAAAAAAAAYAAAAMAAAABf////wAAAABAAAABQAAAAEAAAAEAAAACQAAAAEAAAAEAAAAAQAAAAMAAAAGAAAADQAAAAEAAAACAAAAAQAAAAMAAAABAAAAAQAAAAYAAAAOAAAAAQAAAAEAAAAGAAAADwAAAAX////8AAAAAQAAAAoAAAABAAAACQAAAAkAAAABAAAACQAAAAEAAAAIAAAABgAAAA0AAAABAAAABwAAAAEAAAAIAAAAAQAAAAYAAAAGAAAADgAAAAEAAAAGAAAABgAAAA8AAAAF/////AUBAQQAAABIAGUAYQBwAC8CAAAAASkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4ASABlAGEAcAAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAgAAAAYCAAAAAAAAACcBBAAAAHQAeQBwAGUAARcAAABTAHkAcwB0AGUAbQAuAFUASQBuAHQAMwAyACwAIABtAHMAYwBvAHIAbABpAGIAGQEMAAAASABlAGEAcABDAGEAcABhAGMAaQB0AHkAAAIAACcBBAAAAHQAeQBwAGUAAbkAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAUwB5AHMAdABlAG0ALgBWAGEAbAB1AGUAVAB1AHAAbABlAGAAMwBbAFsAUwB5AHMAdABlAG0ALgBVAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiAF0ALABbAFMAeQBzAHQAZQBtAC4AUgB1AG4AdABpAG0AZQAuAEMAbwBtAHAAaQBsAGUAcgBTAGUAcgB2AGkAYwBlAHMALgBJAFMAdAByAG8AbgBnAEIAbwB4ACwAIABTAHkAcwB0AGUAbQAuAEMAbwByAGUAXQAsAFsAUwB5AHMAdABlAG0ALgBUAHkAcABlACwAIABtAHMAYwBvAHIAbABpAGIAXQBdACwAIABtAHMAYwBvAHIAbABpAGIAXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEIAAAASABlAGEAcABEAHUAbQBwAC8DAAAAAbkAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAUwB5AHMAdABlAG0ALgBWAGEAbAB1AGUAVAB1AHAAbABlAGAAMwBbAFsAUwB5AHMAdABlAG0ALgBVAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiAF0ALABbAFMAeQBzAHQAZQBtAC4AUgB1AG4AdABpAG0AZQAuAEMAbwBtAHAAaQBsAGUAcgBTAGUAcgB2AGkAYwBlAHMALgBJAFMAdAByAG8AbgBnAEIAbwB4ACwAIABTAHkAcwB0AGUAbQAuAEMAbwByAGUAXQAsAFsAUwB5AHMAdABlAG0ALgBUAHkAcABlACwAIABtAHMAYwBvAHIAbABpAGIAXQBdACwAIABtAHMAYwBvAHIAbABpAGIAXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAwAAAAYQAAAAAAAAAAQvBAAAAAGKAAAAUwB5AHMAdABlAG0ALgBWAGEAbAB1AGUAVAB1AHAAbABlAGAAMwBbAFsAUwB5AHMAdABlAG0ALgBVAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiAF0ALABbAFMAeQBzAHQAZQBtAC4AUgB1AG4AdABpAG0AZQAuAEMAbwBtAHAAaQBsAGUAcgBTAGUAcgB2AGkAYwBlAHMALgBJAFMAdAByAG8AbgBnAEIAbwB4ACwAIABTAHkAcwB0AGUAbQAuAEMAbwByAGUAXQAsAFsAUwB5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bwBuAC4AQwBvAG0AbQBvAG4ALgBVAGQAbwBuAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AKwAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWwAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAQwAAABTAHkAbgBjAE0AZQB0AGEAZABhAHQAYQAvDgAAAAFsAAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4ASQBuAHQAZQByAGYAYQBjAGUAcwAuAEkAVQBkAG8AbgBTAHkAbgBjAE0AZQB0AGEAZABhAHQAYQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIALAAAAAYAAAAAAAAAAAcFBwUF + programUnityEngineObjects: [] + serializationDataFormat: 0 diff --git a/Assets/SerializedUdonPrograms/4715e20276be3b141a6a216230cab4e9.asset.meta b/Assets/SerializedUdonPrograms/4715e20276be3b141a6a216230cab4e9.asset.meta new file mode 100644 index 0000000..21f076e --- /dev/null +++ b/Assets/SerializedUdonPrograms/4715e20276be3b141a6a216230cab4e9.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 324eee7015c1d4f4cb459e8845f436ff +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SerializedUdonPrograms/b5280742086799a4c8c0a14e90cd913d.asset b/Assets/SerializedUdonPrograms/b5280742086799a4c8c0a14e90cd913d.asset new file mode 100644 index 0000000..82d80fb --- /dev/null +++ b/Assets/SerializedUdonPrograms/b5280742086799a4c8c0a14e90cd913d.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf61d954ecb803046953c666facfb904, type: 3} + m_Name: b5280742086799a4c8c0a14e90cd913d + m_EditorClassIdentifier: + serializedProgramBytesString: Ai8AAAAAASwAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AUAByAG8AZwByAGEAbQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAACcBGAAAAEkAbgBzAHQAcgB1AGMAdABpAG8AbgBTAGUAdABJAGQAZQBuAHQAaQBmAGkAZQByAAEEAAAAVQBEAE8ATgAXARUAAABJAG4AcwB0AHIAdQBjAHQAaQBvAG4AUwBlAHQAVgBlAHIAcwBpAG8AbgABAAAAAQEIAAAAQgB5AHQAZQBDAG8AZABlAC8BAAAAARcAAABTAHkAcwB0AGUAbQAuAEIAeQB0AGUAWwBdACwAIABtAHMAYwBvAHIAbABpAGIAAQAAAAhkAAAAAQAAAAAAAAEAAAAEAAAAAQAAAAMAAAAJAAAAAQAAAAIAAAABAAAAAwAAAAEAAAAAAAAABgAAAAYAAAABAAAAAQAAAAYAAAAHAAAAAQAAAAAAAAABAAAAAQAAAAYAAAAIAAAABf////wFAQEEAAAASABlAGEAcAAvAgAAAAEpAAAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBVAGQAbwBuAEgAZQBhAHAALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBVAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABkBDAAAAEgAZQBhAHAAQwBhAHAAYQBjAGkAdAB5AAACAAAnAQQAAAB0AHkAcABlAAG5AAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFMAeQBzAHQAZQBtAC4AVgBhAGwAdQBlAFQAdQBwAGwAZQBgADMAWwBbAFMAeQBzAHQAZQBtAC4AVQBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdACwAWwBTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4ASQBTAHQAcgBvAG4AZwBCAG8AeAAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlAF0ALABbAFMAeQBzAHQAZQBtAC4AVAB5AHAAZQAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiAAEBCAAAAEgAZQBhAHAARAB1AG0AcAAvAwAAAAG5AAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFMAeQBzAHQAZQBtAC4AVgBhAGwAdQBlAFQAdQBwAGwAZQBgADMAWwBbAFMAeQBzAHQAZQBtAC4AVQBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdACwAWwBTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4ASQBTAHQAcgBvAG4AZwBCAG8AeAAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlAF0ALABbAFMAeQBzAHQAZQBtAC4AVAB5AHAAZQAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiAAMAAAAGCQAAAAAAAAAELwQAAAABigAAAFMAeQBzAHQAZQBtAC4AVgBhAGwAdQBlAFQAdQBwAGwAZQBgADMAWwBbAFMAeQBzAHQAZQBtAC4AVQBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdACwAWwBTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4ASQBTAHQAcgBvAG4AZwBCAG8AeAAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlAF0ALABbAFMAeQBzAHQAZQBtAC4AVAB5AHAAZQAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiABkBBQAAAEkAdABlAG0AMQAAAAAAAQEFAAAASQB0AGUAbQAyAC8FAAAAAWoAAABTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4AUwB0AHIAbwBuAGcAQgBvAHgAYAAxAFsAWwBWAFIAQwAuAFMARABLADMALgBDAG8AbQBwAG8AbgBlAG4AdABzAC4AVgBSAEMAQQB2AGEAdABhAHIAUABlAGQAZQBzAHQAYQBsACwAIABWAFIAQwBTAEQASwAzAF0AXQAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlAAQAAAAtAQUAAABWAGEAbAB1AGUABQEBBQAAAEkAdABlAG0AMwAvBgAAAAEcAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAFQAeQBwAGUALAAgAG0AcwBjAG8AcgBsAGkAYgAFAAAAKAEuAAAAVgBSAEMALgBTAEQASwAzAC4AQwBvAG0AcABvAG4AZQBuAHQAcwAuAFYAUgBDAEEAdgBhAHQAYQByAFAAZQBkAGUAcwB0AGEAbAAsACAAVgBSAEMAUwBEAEsAMwAFBQQwBAAAABkBBQAAAEkAdABlAG0AMQABAAAAAQEFAAAASQB0AGUAbQAyAC8HAAAAAWAAAABTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4AUwB0AHIAbwBuAGcAQgBvAHgAYAAxAFsAWwBWAFIAQwAuAFMARABLAEIAYQBzAGUALgBWAFIAQwBQAGwAYQB5AGUAcgBBAHAAaQAsACAAVgBSAEMAUwBEAEsAQgBhAHMAZQBdAF0ALAAgAFMAeQBzAHQAZQBtAC4AQwBvAHIAZQAGAAAALQEFAAAAVgBhAGwAdQBlAAUBAQUAAABJAHQAZQBtADMAMAYAAAAHAAAAKAEkAAAAVgBSAEMALgBTAEQASwBCAGEAcwBlAC4AVgBSAEMAUABsAGEAeQBlAHIAQQBwAGkALAAgAFYAUgBDAFMARABLAEIAYQBzAGUABQUEMAQAAAAZAQUAAABJAHQAZQBtADEAAgAAAAEBBQAAAEkAdABlAG0AMgAvCAAAAAGBAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAC4AQwBvAG0AcABpAGwAZQByAFMAZQByAHYAaQBjAGUAcwAuAFMAdAByAG8AbgBnAEIAbwB4AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBVAGQAbwBuAEcAYQBtAGUATwBiAGoAZQBjAHQAQwBvAG0AcABvAG4AZQBuAHQASABlAGEAcABSAGUAZgBlAHIAZQBuAGMAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABTAHkAcwB0AGUAbQAuAEMAbwByAGUACAAAAAEBBQAAAFYAYQBsAHUAZQAvCQAAAAFFAAAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBVAGQAbwBuAEcAYQBtAGUATwBiAGoAZQBjAHQAQwBvAG0AcABvAG4AZQBuAHQASABlAGEAcABSAGUAZgBlAHIAZQBuAGMAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ACQAAAAIwBgAAAAoAAAAoAS4AAABVAG4AaQB0AHkARQBuAGcAaQBuAGUALgBHAGEAbQBlAE8AYgBqAGUAYwB0ACwAIABVAG4AaQB0AHkARQBuAGcAaQBuAGUALgBDAG8AcgBlAE0AbwBkAHUAbABlAAUFBQEBBQAAAEkAdABlAG0AMwAwBgAAAAsAAAAoAUUAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4ARwBhAG0AZQBPAGIAagBlAGMAdABDAG8AbQBwAG8AbgBlAG4AdABIAGUAYQBwAFIAZQBmAGUAcgBlAG4AYwBlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAFBQQwBAAAABkBBQAAAEkAdABlAG0AMQADAAAAAQEFAAAASQB0AGUAbQAyAC8KAAAAAVEAAABTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4AUwB0AHIAbwBuAGcAQgBvAHgAYAAxAFsAWwBTAHkAcwB0AGUAbQAuAFQAeQBwAGUALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFMAeQBzAHQAZQBtAC4AQwBvAHIAZQAMAAAALQEFAAAAVgBhAGwAdQBlAAUBAQUAAABJAHQAZQBtADMAMAYAAAANAAAAKAEVAAAAUwB5AHMAdABlAG0ALgBUAHkAcABlACwAIABtAHMAYwBvAHIAbABpAGIABQUEMAQAAAAZAQUAAABJAHQAZQBtADEABAAAAAEBBQAAAEkAdABlAG0AMgAwCgAAAA4AAAAJAQUAAABWAGEAbAB1AGUABQAAAAUJAQUAAABJAHQAZQBtADMADQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEABQAAAAEBBQAAAEkAdABlAG0AMgAwBQAAAA8AAAAtAQUAAABWAGEAbAB1AGUABQkBBQAAAEkAdABlAG0AMwAFAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQAGAAAAAQEFAAAASQB0AGUAbQAyAC8LAAAAAVMAAABTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4AUwB0AHIAbwBuAGcAQgBvAHgAYAAxAFsAWwBTAHkAcwB0AGUAbQAuAFMAdAByAGkAbgBnACwAIABtAHMAYwBvAHIAbABpAGIAXQBdACwAIABTAHkAcwB0AGUAbQAuAEMAbwByAGUAEAAAACcBBQAAAFYAYQBsAHUAZQABRgAAAFUAbgBpAHQAeQBFAG4AZwBpAG4AZQBHAGEAbQBlAE8AYgBqAGUAYwB0AC4AXwBfAEcAZQB0AEMAbwBtAHAAbwBuAGUAbgB0AF8AXwBTAHkAcwB0AGUAbQBUAHkAcABlAF8AXwBVAG4AaQB0AHkARQBuAGcAaQBuAGUAQwBvAG0AcABvAG4AZQBuAHQABQEBBQAAAEkAdABlAG0AMwAwBgAAABEAAAAoARcAAABTAHkAcwB0AGUAbQAuAFMAdAByAGkAbgBnACwAIABtAHMAYwBvAHIAbABpAGIABQUEMAQAAAAZAQUAAABJAHQAZQBtADEABwAAAAEBBQAAAEkAdABlAG0AMgAwCwAAABIAAAAnAQUAAABWAGEAbAB1AGUAAT4AAABWAFIAQwBTAEQASwBCAGEAcwBlAE4AZQB0AHcAbwByAGsAaQBuAGcALgBfAF8AZwBlAHQAXwBMAG8AYwBhAGwAUABsAGEAeQBlAHIAXwBfAFYAUgBDAFMARABLAEIAYQBzAGUAVgBSAEMAUABsAGEAeQBlAHIAQQBwAGkABQkBBQAAAEkAdABlAG0AMwARAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQAIAAAAAQEFAAAASQB0AGUAbQAyADALAAAAEwAAACcBBQAAAFYAYQBsAHUAZQABVQAAAFYAUgBDAFMARABLADMAQwBvAG0AcABvAG4AZQBuAHQAcwBWAFIAQwBBAHYAYQB0AGEAcgBQAGUAZABlAHMAdABhAGwALgBfAF8AUwBlAHQAQQB2AGEAdABhAHIAVQBzAGUAXwBfAFYAUgBDAFMARABLAEIAYQBzAGUAVgBSAEMAUABsAGEAeQBlAHIAQQBwAGkAXwBfAFMAeQBzAHQAZQBtAFYAbwBpAGQABQkBBQAAAEkAdABlAG0AMwARAAAABQcFBwUBAQsAAABFAG4AdAByAHkAUABvAGkAbgB0AHMALwwAAAABMAAAAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4AVQBkAG8AbgBTAHkAbQBiAG8AbABUAGEAYgBsAGUALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuABQAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAFmAAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4ASQBuAHQAZQByAGYAYQBjAGUAcwAuAEkAVQBkAG8AbgBTAHkAbQBiAG8AbAAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEHAAAAUwB5AG0AYgBvAGwAcwAvDQAAAAFmAAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4ASQBuAHQAZQByAGYAYQBjAGUAcwAuAEkAVQBkAG8AbgBTAHkAbQBiAG8AbAAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAFQAAAAYBAAAAAAAAAAIvDgAAAAErAAAAVgBSAEMALgBV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AQQAAAB0AHkAcABlAAEcAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAFQAeQBwAGUALAAgAG0AcwBjAG8AcgBsAGkAYgAJAQQAAABUAHkAcABlAAUAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBVAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABkBBwAAAEEAZABkAHIAZQBzAHMABQAAAAcFBwUnAQQAAAB0AHkAcABlAAFGAAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFMAeQBzAHQAZQBtAC4AUwB0AHIAaQBuAGcALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAQ8AAABFAHgAcABvAHIAdABlAGQAUwB5AG0AYgBvAGwAcwAwDwAAACAAAAAGAAAAAAAAAAAHBQcFAQERAAAAUwB5AG4AYwBNAGUAdABhAGQAYQB0AGEAVABhAGIAbABlAC8QAAAAATYAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AUwB5AG4AYwBNAGUAdABhAGQAYQB0AGEAVABhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAhAAAABgEAAAAAAAAAJwEEAAAAdAB5AHAAZQABbAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AUwB5AG4AYwBNAGUAdABhAGQAYQB0AGEALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiAAEBDAAAAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhAC8RAAAAAWwAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgAiAAAABgAAAAAAAAAABwUHBQU= + programUnityEngineObjects: [] + serializationDataFormat: 0 diff --git a/Assets/SerializedUdonPrograms/b5280742086799a4c8c0a14e90cd913d.asset.meta b/Assets/SerializedUdonPrograms/b5280742086799a4c8c0a14e90cd913d.asset.meta new file mode 100644 index 0000000..4d0341b --- /dev/null +++ b/Assets/SerializedUdonPrograms/b5280742086799a4c8c0a14e90cd913d.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43846efe38ba2764b83b009f6b6f6b22 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SerializedUdonPrograms/c8df303ceb45ae84f85a11591f741734.asset b/Assets/SerializedUdonPrograms/c8df303ceb45ae84f85a11591f741734.asset new file mode 100644 index 0000000..9c5681d --- /dev/null +++ b/Assets/SerializedUdonPrograms/c8df303ceb45ae84f85a11591f741734.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf61d954ecb803046953c666facfb904, type: 3} + m_Name: c8df303ceb45ae84f85a11591f741734 + m_EditorClassIdentifier: + serializedProgramBytesString: Ai8AAAAAASwAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AUAByAG8AZwByAGEAbQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAACcBGAAAAEkAbgBzAHQAcgB1AGMAdABpAG8AbgBTAGUAdABJAGQAZQBuAHQAaQBmAGkAZQByAAEEAAAAVQBEAE8ATgAXARUAAABJAG4AcwB0AHIAdQBjAHQAaQBvAG4AUwBlAHQAVgBlAHIAcwBpAG8AbgABAAAAAQEIAAAAQgB5AHQAZQBDAG8AZABlAC8BAAAAARcAAABTAHkAcwB0AGUAbQAuAEIAeQB0AGUAWwBdACwAIABtAHMAYwBvAHIAbABpAGIAAQAAAAgQAQAAAQAAAAAAAAEAAAABAAAABgAAABAAAAABAAAAAwAAAAEAAAACAAAACQAAAAEAAAABAAAAAQAAAAIAAAABAAAAAAAAAAYAAAARAAAAAQAAAAAAAAAEAAABCAAAAAEAAAAEAAAABgAAABAAAAABAAAABAAAAAEAAAAMAAAABgAAABIAAAABAAAABAAAAAEAAAAGAAAACQAAAAEAAAAEAAAAAQAAAA0AAAAGAAAAEwAAAAEAAAAEAAAAAQAAAAgAAAAJAAAAAQAAAAQAAAABAAAADgAAAAYAAAAUAAAAAQAAAAQAAAABAAAACgAAAAkAAAABAAAABAAAAAEAAAAPAAAABgAAABUAAAAFAAABCAAAAAX////8BQEBBAAAAEgAZQBhAHAALwIAAAABKQAAAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4AVQBkAG8AbgBIAGUAYQBwACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgACAAAABgIAAAAAAAAAJwEEAAAAdAB5AHAAZQABFwAAAFMAeQBzAHQAZQBtAC4AVQBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgAZAQwAAABIAGUAYQBwAEMAYQBwAGEAYwBpAHQAeQAAAgAAJwEEAAAAdAB5AHAAZQABuQAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBTAHkAcwB0AGUAbQAuAFYAYQBsAHUAZQBUAHUAcABsAGUAYAAzAFsAWwBTAHkAcwB0AGUAbQAuAFUASQBuAHQAMwAyACwAIABtAHMAYwBvAHIAbABpAGIAXQAsAFsAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAC4AQwBvAG0AcABpAGwAZQByAFMAZQByAHYAaQBjAGUAcwAuAEkAUwB0AHIAbwBuAGcAQgBvAHgALAAgAFMAeQBzAHQAZQBtAC4AQwBvAHIAZQBdACwAWwBTAHkAcwB0AGUAbQAuAFQAeQBwAGUALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAQgAAABIAGUAYQBwAEQAdQBtAHAALwMAAAABuQAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBTAHkAcwB0AGUAbQAuAFYAYQBsAHUAZQBUAHUAcABsAGUAYAAzAFsAWwBTAHkAcwB0AGUAbQAuAFUASQBuAHQAMwAyACwAIABtAHMAYwBvAHIAbABpAGIAXQAsAFsAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAC4AQwBvAG0AcABpAGwAZQByAFMAZQByAHYAaQBjAGUAcwAuAEkAUwB0AHIAbwBuAGcAQgBvAHgALAAgAFMAeQBzAHQAZQBtAC4AQwBvAHIAZQBdACwAWwBTAHkAcwB0AGUAbQAuAFQAeQBwAGUALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgADAAAABhYAAAAAAAAABC8EAAAAAYoAAABTAHkAcwB0AGUAbQAuAFYAYQBsAHUAZQBUAHUAcABsAGUAYAAzAFsAWwBTAHkAcwB0AGUAbQAuAFUASQBuAHQAMwAyACwAIABtAHMAYwBvAHIAbABpAGIAXQAsAFsAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAC4AQwBvAG0AcABpAGwAZQByAFMAZQByAHYAaQBjAGUAcwAuAEkAUwB0AHIAbwBuAGcAQgBvAHgALAAgAFMAeQBzAHQAZQBtAC4AQwBvAHIAZQBdACwAWwBTAHkAcwB0AGUAbQAuAFQAeQBwAGUALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgAZAQUAAABJAHQAZQBtADEAAAAAAAEBBQAAAEkAdABlAG0AMgAvBQAAAAFUAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAC4AQwBvAG0AcABpAGwAZQByAFMAZQByAHYAaQBjAGUAcwAuAFMAdAByAG8AbgBnAEIAbwB4AGAAMQBbAFsAUwB5AHMAdABlAG0ALgBCAG8AbwBsAGUAYQBuACwAIABtAHMAYwBvAHIAbABpAGIAXQBdACwAIABTAHkAcwB0AGUAbQAuAEMAbwByAGUABAAAACsBBQAAAFYAYQBsAHUAZQAABQEBBQAAAEkAdABlAG0AMwAvBgAAAAEcAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAFQAeQBwAGUALAAgAG0AcwBjAG8AcgBsAGkAYgAFAAAAKAEYAAAAUwB5AHMAdABlAG0ALgBCAG8AbwBsAGUAYQBuACwAIABtAHMAYwBvAHIAbABpAGIABQUEMAQAAAAZAQUAAABJAHQAZQBtADEAAQAAAAEBBQAAAEkAdABlAG0AMgAvBwAAAAFTAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAC4AQwBvAG0AcABpAGwAZQByAFMAZQByAHYAaQBjAGUAcwAuAFMAdAByAG8AbgBnAEIAbwB4AGAAMQBbAFsAUwB5AHMAdABlAG0ALgBPAGIAagBlAGMAdAAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlAAYAAAAtAQUAAABWAGEAbAB1AGUABQEBBQAAAEkAdABlAG0AMwAwBgAAAAcAAAAoARcAAABTAHkAcwB0AGUAbQAuAE8AYgBqAGUAYwB0ACwAIABtAHMAYwBvAHIAbABpAGIABQUEMAQAAAAZAQUAAABJAHQAZQBtADEAAgAAAAEBBQAAAEkAdABlAG0AMgAwBwAAAAgAAAAtAQUAAABWAGEAbAB1AGUABQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0A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AGUAbQAuAFMAdAByAGkAbgBnACwAIABtAHMAYwBvAHIAbABpAGIAXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEPAAAARQB4AHAAbwByAHQAZQBkAFMAeQBtAGIAbwBsAHMAMA4AAAA1AAAABgQAAAAAAAAAKAELAAAAagB1AG0AcABJAG0AcAB1AGwAcwBlACgBCQAAAHcAYQBsAGsAUwBwAGUAZQBkACgBCAAAAHIAdQBuAFMAcABlAGUAZAAoAQsAAABzAHQAcgBhAGYAZQBTAHAAZQBlAGQABwUHBQEBEQAAAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhAFQAYQBiAGwAZQAvDwAAAAE2AAAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBVAGQAbwBuAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ANgAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWwAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAQwAAABTAHkAbgBjAE0AZQB0AGEAZABhAHQAYQAvEAAAAAFsAAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4ASQBuAHQAZQByAGYAYQBjAGUAcwAuAEkAVQBkAG8AbgBTAHkAbgBjAE0AZQB0AGEAZABhAHQAYQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIANwAAAAYAAAAAAAAAAAcFBwUF + programUnityEngineObjects: [] + serializationDataFormat: 0 diff --git a/Assets/SerializedUdonPrograms/c8df303ceb45ae84f85a11591f741734.asset.meta b/Assets/SerializedUdonPrograms/c8df303ceb45ae84f85a11591f741734.asset.meta new file mode 100644 index 0000000..abb7663 --- /dev/null +++ b/Assets/SerializedUdonPrograms/c8df303ceb45ae84f85a11591f741734.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b5c68eaa8d1a8a846b9f65a592221506 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SerializedUdonPrograms/db6380e7c98d9e94bb856b1e1b1cf56c.asset b/Assets/SerializedUdonPrograms/db6380e7c98d9e94bb856b1e1b1cf56c.asset new file mode 100644 index 0000000..b297d5c --- /dev/null +++ b/Assets/SerializedUdonPrograms/db6380e7c98d9e94bb856b1e1b1cf56c.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bf61d954ecb803046953c666facfb904, type: 3} + m_Name: db6380e7c98d9e94bb856b1e1b1cf56c + m_EditorClassIdentifier: + serializedProgramBytesString: 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AGMAbwByAGwAaQBiAAEBCAAAAEgAZQBhAHAARAB1AG0AcAAvAwAAAAG5AAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFMAeQBzAHQAZQBtAC4AVgBhAGwAdQBlAFQAdQBwAGwAZQBgADMAWwBbAFMAeQBzAHQAZQBtAC4AVQBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdACwAWwBTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4ASQBTAHQAcgBvAG4AZwBCAG8AeAAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlAF0ALABbAFMAeQBzAHQAZQBtAC4AVAB5AHAAZQAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiAAMAAAAGhgAAAAAAAAAELwQAAAABigAAAFMAeQBzAHQAZQBtAC4AVgBhAGwAdQBlAFQAdQBwAGwAZQBgADMAWwBbAFMAeQBzAHQAZQBtAC4AVQBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdACwAWwBTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4ASQBTAHQAcgBvAG4AZwBCAG8AeAAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlAF0ALABbAFMAeQBzAHQAZQBtAC4AVAB5AHAAZQAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiABkBBQAAAEkAdABlAG0AMQAAAAAAAQEFAAAASQB0AGUAbQAyAC8FAAAAAXYAAABTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4AUwB0AHIAbwBuAGcAQgBvAHgAYAAxAFsAWwBWAFIAQwAuAFMARABLADMALgBWAGkAZABlAG8ALgBDAG8AbQBwAG8AbgBlAG4AdABzAC4AQgBhAHMAZQAuAEIAYQBzAGUAVgBSAEMAVgBpAGQAZQBvAFAAbABhAHkAZQByACwAIABWAFIAQwBTAEQASwAzAF0AXQAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlAAQAAAAtAQUAAABWAGEAbAB1AGUABQEBBQAAAEkAdABlAG0AMwAvBgAAAAEcAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAFQAeQBwAGUALAAgAG0AcwBjAG8AcgBsAGkAYgAFAAAAKAE6AAAAVgBSAEMALgBTAEQASwAzAC4AVgBpAGQAZQBvAC4AQwBvAG0AcABvAG4AZQBuAHQAcwAuAEIAYQBzAGUALgBCAGEAcwBlAFYAUgBDAFYAaQBkAGUAbwBQAGwAYQB5AGUAcgAsACAAVgBSAEMAUwBEAEsAMwAFBQQwBAAAABkBBQAAAEkAdABlAG0AMQABAAAAAQEFAAAASQB0AGUAbQAyAC8HAAAAAVQAAABTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4AUwB0AHIAbwBuAGcAQgBvAHgAYAAxAFsAWwBTAHkAcwB0AGUAbQAuAEIAbwBvAGwAZQBhAG4ALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFMAeQBzAHQAZQBtAC4AQwBvAHIAZQAGAAAAKwEFAAAAVgBhAGwAdQBlAAAFAQEFAAAASQB0AGUAbQAzADAGAAAABwAAACgBGAAAAFMAeQBzAHQAZQBtAC4AQgBvAG8AbABlAGEAbgAsACAAbQBzAGMAbwByAGwAaQBiAAUFBDAEAAAAGQEFAAAASQB0AGUAbQAxAAIAAAABAQUAAABJAHQAZQBtADIAMAcAAAAIAAAAKwEFAAAAVgBhAGwAdQBlAAAFCQEFAAAASQB0AGUAbQAzAAcAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAAMAAAABAQUAAABJAHQAZQBtADIALwgAAAABgQAAAFMAeQBzAHQAZQBtAC4AUgB1AG4AdABpAG0AZQAuAEMAbwBtAHAAaQBsAGUAcgBTAGUAcgB2AGkAYwBlAHMALgBTAHQAcgBvAG4AZwBCAG8AeABgADEAWwBbAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4AVQBkAG8AbgBHAGEAbQBlAE8AYgBqAGUAYwB0AEMAbwBtAHAAbwBuAGUAbgB0AEgAZQBhAHAAUgBlAGYAZQByAGUAbgBjAGUALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAF0AXQAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlAAkAAAABAQUAAABWAGEAbAB1AGUALwkAAAABRQAAAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4AVQBkAG8AbgBHAGEAbQBlAE8AYgBqAGUAYwB0AEMAbwBtAHAAbwBuAGUAbgB0AEgAZQBhAHAAUgBlAGYAZQByAGUAbgBjAGUALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAoAAAACMAYAAAALAAAAKAEuAAAAVQBuAGkAdAB5AEUAbgBnAGkAbgBlAC4ARwBhAG0AZQBPAGIAagBlAGMAdAAsACAAVQBuAGkAdAB5AEUAbgBnAGkAbgBlAC4AQwBvAHIAZQBNAG8AZAB1AGwAZQAFBQUBAQUAAABJAHQAZQBtADMAMAYAAAAMAAAAKAFFAAAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBVAGQAbwBuAEcAYQBtAGUATwBiAGoAZQBjAHQAQwBvAG0AcABvAG4AZQBuAHQASABlAGEAcABSAGUAZgBlAHIAZQBuAGMAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ABQUEMAQAAAAZAQUAAABJAHQAZQBtADEABAAAAAEBBQAAAEkAdABlAG0AMgAwCAAAAA0AAAABAQUAAABWAGEAbAB1AGUAMAkAAAAOAAAAAjAGAAAADwAAACgBIAAAAFYAUgBDAC4AVQBkAG8AbgAuAFUAZABvAG4AQgBlAGgAYQB2AGkAbwB1AHIALAAgAFYAUgBDAC4AVQBkAG8AbgAFBQUJAQUAAABJAHQAZQBtADMADAAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEABQAAAAEBBQAAAEkAdABlAG0AMgAvCgAAAAFTAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAC4AQwBvAG0AcABpAGwAZQByAFMAZQByAHYAaQBjAGUAcwAuAFMAdAByAG8AbgBnAEIAbwB4AGAAMQBbAFsAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlABAAAAAnAQUAAABWAGEAbAB1AGUAAQ8AAABTAHkAbgBjAFYAaQBkAGUAbwBJAGYAVABpAG0AZQAFAQEFAAAASQB0AGUAbQAzADAGAAAAEQAAACgBFwAAAFMAeQBzAHQAZQBtAC4AUwB0AHIAaQBuAGcALAAgAG0AcwBjAG8AcgBsAGkAYgAFBQQwBAAAABkBBQAAAEkAdABlAG0AMQAGAAAAAQEFAAAASQB0AGUAbQAyADAHAAAAEgAAACsBBQAAAFYAYQBsAHUAZQAABQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQAHAAAAAQEFAAAASQB0AGUAbQAyADAHAAAAEwAAACsBBQAAAFYAYQBsAHUAZQAABQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQAIAAAAAQEFAAAASQB0AGUAbQAyADAFAAAAFAAAAC0BBQAAAFYAYQBsAHUAZQAFCQEFAAAASQB0AGUAbQAzAAUAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAAkAAAABAQUAAABJAHQAZQBtADIAMAcAAAAVAAAAKwEFAAAAVgBhAGwAdQBlAAAFCQEFAAAASQB0AGUAbQAzAAcAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAAoAAAABAQUAAABJAHQAZQBtADIAMAgAAAAWAAAAAQEFAAAAVgBhAGwAdQBlADAJAAAAFwAAAAoPAAAABQUJAQUAAABJAHQAZQBtADMADAAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEACwAAAAEBBQAAAEkAdABlAG0AMgAwCgAAABgAAAAnAQUAAABWAGEAbAB1AGUAAQkAAABTAHkAbgBjAFYAaQBkAGUAbwAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAAwAAAABAQUAAABJAHQAZQBtADIAMAgAAAAZAAAAAQEFAAAAVgBhAGwAdQBlADAJAAAAGgAAAAoPAAAABQUJAQUAAABJAHQAZQBtADMADAAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEADQAAAAEBBQAAAEkAdABlAG0AMgAwCgAAABsAAAAnAQUAAABWAGEAbAB1AGUAAQ8AAABTAHkAbgBjAFYAaQBkAGUAbwBJAGYAVABpAG0AZQAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAA4AAAABAQUAAABJAHQAZQBtADIAMAcAAAAcAAAAKwEFAAAAVgBhAGwAdQBlAAAFCQEFAAAASQB0AGUAbQAzAAcAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAA8AAAABAQUAAABJAHQAZQBtADIALwsAAAABUwAAAFMAeQBzAHQAZQBtAC4AUgB1AG4AdABpAG0AZQAuAEMAbwBtAHAAaQBsAGUAcgBTAGUAcgB2AGkAYwBlAHMALgBTAHQAcgBvAG4AZwBCAG8AeABgADEAWwBbAFMAeQBzAHQAZQBtAC4AUwBpAG4AZwBsAGUALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFMAeQBzAHQAZQBtAC4AQwBvAHIAZQAdAAAAHwEFAAAAVgBhAGwAdQBlAAAAAAAFAQEFAAAASQB0AGUAbQAzADAGAAAAHgAAACgBFwAAAFMAeQBzAHQAZQBtAC4AUwBpAG4AZwBsAGUALAAgAG0AcwBjAG8AcgBsAGkAYgAFBQQwBAAAABkBBQAAAEkAdABlAG0AMQAQAAAAAQEFAAAASQB0AGUAbQAyADALAAAAHwAAAB8BBQAAAFYAYQBsAHUAZQAAAAAABQkBBQAAAEkAdABlAG0AMwAeAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQARAAAAAQEFAAAASQB0AGUAbQAyADALAAAAIAAAAB8BBQAAAFYAYQBsAHUAZQAAAAAABQkBBQAAAEkAdABlAG0AMwAeAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQASAAAAAQEFAAAASQB0AGUAbQAyADALAAAAIQAAAB8BBQAAAFYAYQBsAHUAZQAAAAAABQkBBQAAAEkAdABlAG0AMwAeAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQATAAAAAQEFAAAASQB0AGUAbQAyADALAAAAIgAAAB8BBQAAAFYAYQBsAHUAZQAAAAAABQkBBQAAAEkAdABlAG0AMwAeAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQAUAAAAAQEFAAAASQB0AGUAbQAyADAFAAAAIwAAAC0BBQAAAFYAYQBsAHUAZQAFCQEFAAAASQB0AGUAbQAzAAUAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxABUAAAABAQUAAABJAHQAZQBtADIAMAUAAAAkAAAALQEFAAAAVgBhAGwAdQBlAAUJAQUAAABJAHQAZQBtADMABQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAFgAAAAEBBQAAAEkAdABlAG0AMgAwCwAAACUAAAAfAQUAAABWAGEAbAB1AGUAAAAAAAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAFwAAAAEBBQAAAEkAdABlAG0AMgAwCwAAACYAAAAfAQUAAABWAGEAbAB1AGUAAAAAAAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAGAAAAAEBBQAAAEkAdABlAG0AMgAwCwAAACcAAAAfAQUAAABWAGEAbAB1AGUAAAAAAAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAGQAAAAEBBQAAAEkAdABlAG0AMgAwCwAAACgAAAAfAQUAAABWAGEAbAB1AGUAAAAAAAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAGgAAAAEBBQAAAEkAdABlAG0AMgAwCwAAACkAAAAfAQUAAABWAGEAbAB1AGUAAAAAAAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAGwAAAAEBBQAAAEkAdABlAG0AMgAwCwAAACoAAAAfAQUAAABWAGEAbAB1AGUAAAAAAAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAHAAAAAEBBQAAAEkAdABlAG0AMgAvDAAAAAFTAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAC4AQwBvAG0AcABpAGwAZQByAFMAZQByAHYAaQBjAGUAcwAuAFMAdAByAG8AbgBnAEIAbwB4AGAAMQBbAFsAUwB5AHMAdABlAG0ALgBEAG8AdQBiAGwAZQAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlACsAAAAhAQUAAABWAGEAbAB1AGUAAAAAAAAAAAAFAQEFAAAASQB0AGUAbQAzADAGAAAALAAAACgBFwAAAFMAeQBzAHQAZQBtAC4ARABvAHUAYgBsAGUALAAgAG0AcwBjAG8AcgBsAGkAYgAFBQQwBAAAABkBBQAAAEkAdABlAG0AMQAdAAAAAQEFAAAASQB0AGUAbQAyADAFAAAALQAAAC0BBQAAAFYAYQBsAHUAZQAFCQEFAAAASQB0AGUAbQAzAAUAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAB4AAAABAQUAAABJAHQAZQBtADIAMAcAAAAuAAAAKwEFAAAAVgBhAGwAdQBlAAAFCQEFAAAASQB0AGUAbQAzAAcAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAB8AAAABAQUAAABJAHQAZQBtADIAMAsAAAAvAAAAHwEFAAAAVgBhAGwAdQBlAAAAAAAFCQEFAAAASQB0AGUAbQAzAB4AAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxACAAAAABAQUAAABJAHQAZQBtADIAMAsAAAAwAAAAHwEFAAAAVgBhAGwAdQBlAAAAAAAFCQEFAAAASQB0AGUAbQAzAB4AAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxACEAAAABAQUAAABJAHQAZQBtADIAMAsAAAAxAAAAHwEFAAAAVgBhAGwAdQBlAAAAAAAFCQEFAAAASQB0AGUAbQAzAB4AAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxACIAAAABAQUAAABJAHQAZQBtADIAMAsAAAAyAAAAHwEFAAAAVgBhAGwAdQBlAAAAAAAFCQEFAAAASQB0AGUAbQAzAB4AAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxACMAAAABAQUAAABJAHQAZQBtADIAMAgAAAAzAAAAAQEFAAAAVgBhAGwAdQBlADAJAAAANAAAAAoPAAAABQUJAQUAAABJAHQAZQBtADMADAAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAJAAAAAEBBQAAAEkAdABlAG0AMgAwCgAAADUAAAAnAQUAAABWAGEAbAB1AGUAAQkAAABTAHkAbgBjAFYAaQBkAGUAbwAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxACUAAAABAQUAAABJAHQAZQBtADIAMAcAAAA2AAAAKwEFAAAAVgBhAGwAdQBlAAAFCQEFAAAASQB0AGUAbQAzAAcAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxACYAAAABAQUAAABJAHQAZQBtADIAMAgAAAA3AAAAAQEFAAAAVgBhAGwAdQBlADAJAAAAOAAAAAoLAAAABQUJAQUAAABJAHQAZQBtADMADAAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAJwAAAAEBBQAAAEkAdABlAG0AMgAvDQAAAAFpAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAC4AQwBvAG0AcABpAGwAZQByAFMAZQByAHYAaQBjAGUAcwAuAFMAdAByAG8AbgBnAEIAbwB4AGAAMQBbAFsAVgBSAEMALgBTAEQASwAzAC4AQwBvAG0AcABvAG4AZQBuAHQAcwAuAFYAUgBDAFUAcgBsAEkAbgBwAHUAdABGAGkAZQBsAGQALAAgAFYAUgBDAFMARABLADMAXQBdACwAIABTAHkAcwB0AGUAbQAuAEMAbwByAGUAOQAAAC0BBQAAAFYAYQBsAHUAZQAFAQEFAAAASQB0AGUAbQAzADAGAAAAOgAAACgBLQAAAFYAUgBDAC4AUwBEAEsAMwAuAEMAbwBtAHAAbwBuAGUAbgB0AHMALgBWAFIAQwBVAHIAbABJAG4AcAB1AHQARgBpAGUAbABkACwAIABWAFIAQwBTAEQASwAzAAUFBDAEAAAAGQEFAAAASQB0AGUAbQAxACgAAAABAQUAAABJAHQAZQBtADIALw4AAAABUgAAAFMAeQBzAHQAZQBtAC4AUgB1AG4AdABpAG0AZQAuAEMAbwBtAHAAaQBsAGUAcgBTAGUAcgB2AGkAYwBlAHMALgBTAHQAcgBvAG4AZwBCAG8AeABgADEAWwBbAFMAeQBzAHQAZQBtAC4ASQBuAHQAMwAyACwAIABtAHMAYwBvAHIAbABpAGIAXQBdACwAIABTAHkAcwB0AGUAbQAuAEMAbwByAGUAOwAAABcBBQAAAFYAYQBsAHUAZQAAAAAABQEBBQAAAEkAdABlAG0AMwAwBgAAADwAAAAoARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiAAUFBDAEAAAAGQEFAAAASQB0AGUAbQAxACkAAAABAQUAAABJAHQAZQBtADIAMA4AAAA9AAAAFwEFAAAAVgBhAGwAdQBlAAEAAAAFCQEFAAAASQB0AGUAbQAzADwAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxACoAAAABAQUAAABJAHQAZQBtADIAMAUAAAA+AAAALQEFAAAAVgBhAGwAdQBlAAUJAQUAAABJAHQAZQBtADMABQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAKwAAAAEBBQAAAEkAdABlAG0AMgAwBQAAAD8AAAAtAQUAAABWAGEAbAB1AGUABQkBBQAAAEkAdABlAG0AMwAFAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQAsAAAAAQEFAAAASQB0AGUAbQAyAC8PAAAAAVoAAABTAHkAcwB0AGUAbQAuAFIAdQBuAHQAaQBtAGUALgBDAG8AbQBwAGkAbABlAHIAUwBlAHIAdgBpAGMAZQBzAC4AUwB0AHIAbwBuAGcAQgBvAHgAYAAxAFsAWwBWAFIAQwAuAFMARABLAEIAYQBzAGUALgBWAFIAQwBVAHIAbAAsACAAVgBSAEMAUwBEAEsAQgBhAHMAZQBdAF0ALAAgAFMAeQBzAHQAZQBtAC4AQwBvAHIAZQBAAAAALQEFAAAAVgBhAGwAdQBlAAUBAQUAAABJAHQAZQBtADMAMAYAAABBAAAAKAEeAAAAVgBSAEMALgBTAEQASwBCAGEAcwBlAC4AVgBSAEMAVQByAGwALAAgAFYAUgBDAFMARABLAEIAYQBzAGUABQUEMAQAAAAZAQUAAABJAHQAZQBtADEALQAAAAEBBQAAAEkAdABlAG0AMgAwBwAAAEIAAAArAQUAAABWAGEAbAB1AGUAAAUJAQUAAABJAHQAZQBtADMABwAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEALgAAAAEBBQAAAEkAdABlAG0AMgAvEAAAAAFTAAAAUwB5AHMAdABlAG0ALgBSAHUAbgB0AGkAbQBlAC4AQwBvAG0AcABpAGwAZQByAFMAZQByAHYAaQBjAGUAcwAuAFMAdAByAG8AbgBnAEIAbwB4AGAAMQBbAFsAUwB5AHMAdABlAG0ALgBPAGIAagBlAGMAdAAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAUwB5AHMAdABlAG0ALgBDAG8AcgBlAEMAAAAtAQUAAABWAGEAbAB1AGUABQEBBQAAAEkAdABlAG0AMwAwBgAAAEQAAAAoARcAAABTAHkAcwB0AGUAbQAuAE8AYgBqAGUAYwB0ACwAIABtAHMAYwBvAHIAbABpAGIABQUEMAQAAAAZAQUAAABJAHQAZQBtADEALwAAAAEBBQAAAEkAdABlAG0AMgAwCgAAAEUAAAAnAQUAAABWAGEAbAB1AGUAARgAAABWAGkAZABlAG8AIABVAFIATAAgAEMAaABhAG4AZwBlAGQAIAB0AG8AIAB7ADAAfQAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxADAAAAABAQUAAABJAHQAZQBtADIAMBAAAABGAAAALQEFAAAAVgBhAGwAdQBlAAUJAQUAAABJAHQAZQBtADMARAAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAMQAAAAEBBQAAAEkAdABlAG0AMgAwBwAAAEcAAAArAQUAAABWAGEAbAB1AGUAAAUJAQUAAABJAHQAZQBtADMABwAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAMgAAAAEBBQAAAEkAdABlAG0AMgAwCAAAAEgAAAABAQUAAABWAGEAbAB1AGUAMAkAAABJAAAACgsAAAAFBQkBBQAAAEkAdABlAG0AMwAMAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQAzAAAAAQEFAAAASQB0AGUAbQAyADAFAAAASgAAAC0BBQAAAFYAYQBsAHUAZQAFCQEFAAAASQB0AGUAbQAzAAUAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxADQAAAABAQUAAABJAHQAZQBtADIAMAcAAABLAAAAKwEFAAAAVgBhAGwAdQBlAAAFCQEFAAAASQB0AGUAbQAzAAcAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxADUAAAABAQUAAABJAHQAZQBtADIAMAUAAABMAAAALQEFAAAAVgBhAGwAdQBlAAUJAQUAAABJAHQAZQBtADMABQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEANgAAAAEBBQAAAEkAdABlAG0AMgAwCAAAAE0AAAABAQUAAABWAGEAbAB1AGUAMAkAAABOAAAACg8AAAAFBQkBBQAAAEkAdABlAG0AMwAMAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQA3AAAAAQEFAAAASQB0AGUAbQAyADAKAAAATwAAACcBBQAAAFYAYQBsAHUAZQABCQAAAFMAeQBuAGMAVgBpAGQAZQBvAAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAOAAAAAEBBQAAAEkAdABlAG0AMgAwBwAAAFAAAAArAQUAAABWAGEAbAB1AGUAAQUJAQUAAABJAHQAZQBtADMABwAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAOQAAAAEBBQAAAEkAdABlAG0AMgAwBQAAAFEAAAAtAQUAAABWAGEAbAB1AGUABQkBBQAAAEkAdABlAG0AMwAFAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQA6AAAAAQEFAAAASQB0AGUAbQAyADAQAAAAUgAAAC0BBQAAAFYAYQBsAHUAZQAFCQEFAAAASQB0AGUAbQAzAEQAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxADsAAAABAQUAAABJAHQAZQBtADIAMAoAAABTAAAAJwEFAAAAVgBhAGwAdQBlAAERAAAAVgBpAGQAZQBvACAAZgBhAGkAbABlAGQAOgAgAHsAMAB9AAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAPAAAAAEBBQAAAEkAdABlAG0AMgAwEAAAAFQAAAAtAQUAAABWAGEAbAB1AGUABQkBBQAAAEkAdABlAG0AMwBEAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQA9AAAAAQEFAAAASQB0AGUAbQAyADAHAAAAVQAAACsBBQAAAFYAYQBsAHUAZQAABQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQA+AAAAAQEFAAAASQB0AGUAbQAyADAIAAAAVgAAAAEBBQAAAFYAYQBsAHUAZQAwCQAAAFcAAAAKCwAAAAUFCQEFAAAASQB0AGUAbQAzAAwAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAD8AAAABAQUAAABJAHQAZQBtADIAMAwAAABYAAAAIQEFAAAAVgBhAGwAdQBlAAAAAAAAAAAABQkBBQAAAEkAdABlAG0AMwAsAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBAAAAAAQEFAAAASQB0AGUAbQAyADAHAAAAWQAAACsBBQAAAFYAYQBsAHUAZQABBQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBBAAAAAQEFAAAASQB0AGUAbQAyADAHAAAAWgAAACsBBQAAAFYAYQBsAHUAZQAABQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBCAAAAAQEFAAAASQB0AGUAbQAyADAFAAAAWwAAAC0BBQAAAFYAYQBsAHUAZQAFCQEFAAAASQB0AGUAbQAzAAUAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAEMAAAABAQUAAABJAHQAZQBtADIAMAcAAABcAAAAKwEFAAAAVgBhAGwAdQBlAAEFCQEFAAAASQB0AGUAbQAzAAcAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAEQAAAABAQUAAABJAHQAZQBtADIAMAcAAABdAAAAKwEFAAAAVgBhAGwAdQBlAAAFCQEFAAAASQB0AGUAbQAzAAcAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAEUAAAABAQUAAABJAHQAZQBtADIAMAgAAABeAAAAAQEFAAAAVgBhAGwAdQBlADAJAAAAXwAAAAoLAAAABQUJAQUAAABJAHQAZQBtADMADAAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEARgAAAAEBBQAAAEkAdABlAG0AMgAwCwAAAGAAAAAfAQUAAABWAGEAbAB1AGUAAAAAAAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEARwAAAAEBBQAAAEkAdABlAG0AMgAwBwAAAGEAAAArAQUAAABWAGEAbAB1AGUAAAUJAQUAAABJAHQAZQBtADMABwAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEASAAAAAEBBQAAAEkAdABlAG0AMgAwBwAAAGIAAAArAQUAAABWAGEAbAB1AGUAAAUJAQUAAABJAHQAZQBtADMABwAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEASQAAAAEBBQAAAEkAdABlAG0AMgAwCAAAAGMAAAABAQUAAABWAGEAbAB1AGUAMAkAAABkAAAACgsAAAAFBQkBBQAAAEkAdABlAG0AMwAMAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBKAAAAAQEFAAAASQB0AGUAbQAyADAHAAAAZQAAACsBBQAAAFYAYQBsAHUAZQAABQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBLAAAAAQEFAAAASQB0AGUAbQAyADAOAAAAZgAAABcBBQAAAFYAYQBsAHUAZQAAAAAABQkBBQAAAEkAdABlAG0AMwA8AAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBMAAAAAQEFAAAASQB0AGUAbQAyADAOAAAAZwAAABcBBQAAAFYAYQBsAHUAZQAAAAAABQkBBQAAAEkAdABlAG0AMwA8AAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBNAAAAAQEFAAAASQB0AGUAbQAyADAHAAAAaAAAACsBBQAAAFYAYQBsAHUAZQAABQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBOAAAAAQEFAAAASQB0AGUAbQAyADALAAAAaQAAAB8BBQAAAFYAYQBsAHUAZQAAAAAABQkBBQAAAEkAdABlAG0AMwAeAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBPAAAAAQEFAAAASQB0AGUAbQAyADALAAAAagAAAB8BBQAAAFYAYQBsAHUAZQAAACBBBQkBBQAAAEkAdABlAG0AMwAeAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBQAAAAAQEFAAAASQB0AGUAbQAyADAHAAAAawAAACsBBQAAAFYAYQBsAHUAZQAABQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBRAAAAAQEFAAAASQB0AGUAbQAyADAKAAAAbAAAAC0BBQAAAFYAYQBsAHUAZQAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAFIAAAABAQUAAABJAHQAZQBtADIAMA8AAABtAAAALQEFAAAAVgBhAGwAdQBlAAUJAQUAAABJAHQAZQBtADMAQQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAUwAAAAEBBQAAAEkAdABlAG0AMgAwBQAAAG4AAAAtAQUAAABWAGEAbAB1AGUABQkBBQAAAEkAdABlAG0AMwAFAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBUAAAAAQEFAAAASQB0AGUAbQAyADAFAAAAbwAAAC0BBQAAAFYAYQBsAHUAZQAFCQEFAAAASQB0AGUAbQAzAAUAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAFUAAAABAQUAAABJAHQAZQBtADIAMA8AAABwAAAALQEFAAAAVgBhAGwAdQBlAAUJAQUAAABJAHQAZQBtADMAQQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAVgAAAAEBBQAAAEkAdABlAG0AMgAwCAAAAHEAAAABAQUAAABWAGEAbAB1AGUAMAkAAAByAAAACg8AAAAFBQkBBQAAAEkAdABlAG0AMwAMAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBXAAAAAQEFAAAASQB0AGUAbQAyADAKAAAAcwAAACcBBQAAAFYAYQBsAHUAZQABCQAAAFMAeQBuAGMAVgBpAGQAZQBvAAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAWAAAAAEBBQAAAEkAdABlAG0AMgAwEAAAAHQAAAAtAQUAAABWAGEAbAB1AGUABQkBBQAAAEkAdABlAG0AMwBEAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBZAAAAAQEFAAAASQB0AGUAbQAyADAKAAAAdQAAACcBBQAAAFYAYQBsAHUAZQABEwAAAFAAbABhAHkAaQBuAGcAIABzAHkAbgBjAGUAZAA6ACAAewAwAH0ABQkBBQAAAEkAdABlAG0AMwARAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBaAAAAAQEFAAAASQB0AGUAbQAyADAQAAAAdgAAAC0BBQAAAFYAYQBsAHUAZQAFCQEFAAAASQB0AGUAbQAzAEQAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAFsAAAABAQUAAABJAHQAZQBtADIAMAcAAAB3AAAAKwEFAAAAVgBhAGwAdQBlAAAFCQEFAAAASQB0AGUAbQAzAAcAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAFwAAAABAQUAAABJAHQAZQBtADIAMAgAAAB4AAAAAQEFAAAAVgBhAGwAdQBlADAJAAAAeQAAAAoLAAAABQUJAQUAAABJAHQAZQBtADMADAAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAXQAAAAEBBQAAAEkAdABlAG0AMgAwCwAAAHoAAAAfAQUAAABWAGEAbAB1AGUAAAAAAAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAXgAAAAEBBQAAAEkAdABlAG0AMgAwBwAAAHsAAAArAQUAAABWAGEAbAB1AGUAAAUJAQUAAABJAHQAZQBtADMABwAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAXwAAAAEBBQAAAEkAdABlAG0AMgAwBQAAAHwAAAAtAQUAAABWAGEAbAB1AGUABQkBBQAAAEkAdABlAG0AMwAFAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBgAAAAAQEFAAAASQB0AGUAbQAyADAFAAAAfQAAAC0BBQAAAFYAYQBsAHUAZQAFCQEFAAAASQB0AGUAbQAzAAUAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAGEAAAABAQUAAABJAHQAZQBtADIAMA0AAAB+AAAALQEFAAAAVgBhAGwAdQBlAAUJAQUAAABJAHQAZQBtADMAOgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAYgAAAAEBBQAAAEkAdABlAG0AMgAwCwAAAH8AAAAfAQUAAABWAGEAbAB1AGUAAACgQAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAYwAAAAEBBQAAAEkAdABlAG0AMgAwCwAAAIAAAAAfAQUAAABWAGEAbAB1AGUAAACAPwUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAZAAAAAEBBQAAAEkAdABlAG0AMgAwCwAAAIEAAAAfAQUAAABWAGEAbAB1AGUAAAAAAAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAZQAAAAEBBQAAAEkAdABlAG0AMgAwCwAAAIIAAAAfAQUAAABWAGEAbAB1AGUAAAAAAAUJAQUAAABJAHQAZQBtADMAHgAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAZgAAAAEBBQAAAEkAdABlAG0AMgAwDwAAAIMAAAAtAQUAAABWAGEAbAB1AGUABQkBBQAAAEkAdABlAG0AMwBBAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBnAAAAAQEFAAAASQB0AGUAbQAyADAOAAAAhAAAABcBBQAAAFYAYQBsAHUAZQAAAAAABQkBBQAAAEkAdABlAG0AMwA8AAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBoAAAAAQEFAAAASQB0AGUAbQAyADAOAAAAhQAAABcBBQAAAFYAYQBsAHUAZQAAAAAABQkBBQAAAEkAdABlAG0AMwA8AAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBpAAAAAQEFAAAASQB0AGUAbQAyADAHAAAAhgAAACsBBQAAAFYAYQBsAHUAZQAABQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBqAAAAAQEFAAAASQB0AGUAbQAyADAHAAAAhwAAACsBBQAAAFYAYQBsAHUAZQAABQkBBQAAAEkAdABlAG0AMwAHAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBrAAAAAQEFAAAASQB0AGUAbQAyADAKAAAAiAAAACcBBQAAAFYAYQBsAHUAZQABUgAAAFYAUgBDAFMARABLADMAVgBpAGQAZQBvAEMAbwBtAHAAbwBuAGUAbgB0AHMAQgBhAHMAZQBCAGEAcwBlAFYAUgBDAFYAaQBkAGUAbwBQAGwAYQB5AGUAcgAuAF8AXwBzAGUAdABfAEwAbwBvAHAAXwBfAFMAeQBzAHQAZQBtAEIAbwBvAGwAZQBhAG4AXwBfAFMAeQBzAHQAZQBtAFYAbwBpAGQABQkBBQAAAEkAdABlAG0AMwARAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBsAAAAAQEFAAAASQB0AGUAbQAyADAKAAAAiQAAACcBBQAAAFYAYQBsAHUAZQABRAAAAFYAUgBDAFMARABLAEIAYQBzAGUATgBlAHQAdwBvAHIAawBpAG4AZwAuAF8AXwBJAHMATwB3AG4AZQByAF8AXwBVAG4AaQB0AHkARQBuAGcAaQBuAGUARwBhAG0AZQBPAGIAagBlAGMAdABfAF8AUwB5AHMAdABlAG0AQgBvAG8AbABlAGEAbgAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAG0AAAABAQUAAABJAHQAZQBtADIAMAoAAACKAAAAJwEFAAAAVgBhAGwAdQBlAAFVAAAAVgBSAEMAVQBkAG8AbgBDAG8AbQBtAG8AbgBJAG4AdABlAHIAZgBhAGMAZQBzAEkAVQBkAG8AbgBFAHYAZQBuAHQAUgBlAGMAZQBpAHYAZQByAC4AXwBfAFMAZQBuAGQAQwB1AHMAdABvAG0ARQB2AGUAbgB0AF8AXwBTAHkAcwB0AGUAbQBTAHQAcgBpAG4AZwBfAF8AUwB5AHMAdABlAG0AVgBvAGkAZAAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAG4AAAABAQUAAABJAHQAZQBtADIAMAoAAACLAAAAJwEFAAAAVgBhAGwAdQBlAAE/AAAAVgBSAEMAUwBEAEsAMwBWAGkAZABlAG8AQwBvAG0AcABvAG4AZQBuAHQAcwBCAGEAcwBlAEIAYQBzAGUAVgBSAEMAVgBpAGQAZQBvAFAAbABhAHkAZQByAC4AXwBfAFAAbABhAHkAXwBfAFMAeQBzAHQAZQBtAFYAbwBpAGQABQkBBQAAAEkAdABlAG0AMwARAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQBvAAAAAQEFAAAASQB0AGUAbQAyADAKAAAAjAAAACcBBQAAAFYAYQBsAHUAZQABRAAAAFYAUgBDAFMARABLADMAVgBpAGQAZQBvAEMAbwBtAHAAbwBuAGUAbgB0AHMAQgBhAHMAZQBCAGEAcwBlAFYAUgBDAFYAaQBkAGUAbwBQAGwAYQB5AGUAcgAuAF8AXwBHAGUAdABUAGkAbQBlAF8AXwBTAHkAcwB0AGUAbQBTAGkAbgBnAGwAZQAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAHAAAAABAQUAAABJAHQAZQBtADIAMAoAAACNAAAAJwEFAAAAVgBhAGwAdQBlAAE7AAAAVgBSAEMAUwBEAEsAQgBhAHMAZQBOAGUAdAB3AG8AcgBrAGkAbgBnAC4AXwBfAEcAZQB0AFMAZQByAHYAZQByAFQAaQBtAGUASQBuAFMAZQBjAG8AbgBkAHMAXwBfAFMAeQBzAHQAZQBtAEQAbwB1AGIAbABlAAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAcQAAAAEBBQAAAEkAdABlAG0AMgAwCgAAAI4AAAAnAQUAAABWAGEAbAB1AGUAATQAAABTAHkAcwB0AGUAbQBDAG8AbgB2AGUAcgB0AC4AXwBfAFQAbwBTAGkAbgBnAGwAZQBfAF8AUwB5AHMAdABlAG0ARABvAHUAYgBsAGUAXwBfAFMAeQBzAHQAZQBtAFMAaQBuAGcAbABlAAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAcgAAAAEBBQAAAEkAdABlAG0AMgAwCgAAAI8AAAAnAQUAAABWAGEAbAB1AGUAAUYAAABTAHkAcwB0AGUAbQBTAGkAbgBnAGwAZQAuAF8AXwBvAHAAXwBTAHUAYgB0AHIAYQBjAHQAaQBvAG4AXwBfAFMAeQBzAHQAZQBtAFMAaQBuAGcAbABlAF8AUwB5AHMAdABlAG0AUwBpAG4AZwBsAGUAXwBfAFMAeQBzAHQAZQBtAFMAaQBuAGcAbABlAAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAcwAAAAEBBQAAAEkAdABlAG0AMgAwCgAAAJAAAAAnAQUAAABWAGEAbAB1AGUAAUgAAABWAFIAQwBTAEQASwAzAFYAaQBkAGUAbwBDAG8AbQBwAG8AbgBlAG4AdABzAEIAYQBzAGUAQgBhAHMAZQBWAFIAQwBWAGkAZABlAG8AUABsAGEAeQBlAHIALgBfAF8ARwBlAHQARAB1AHIAYQB0AGkAbwBuAF8AXwBTAHkAcwB0AGUAbQBTAGkAbgBnAGwAZQAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAHQAAAABAQUAAABJAHQAZQBtADIAMAoAAACRAAAAJwEFAAAAVgBhAGwAdQBlAAFOAAAAVQBuAGkAdAB5AEUAbgBnAGkAbgBlAE0AYQB0AGgAZgAuAF8AXwBDAGwAYQBtAHAAXwBfAFMAeQBzAHQAZQBtAFMAaQBuAGcAbABlAF8AUwB5AHMAdABlAG0AUwBpAG4AZwBsAGUAXwBTAHkAcwB0AGUAbQBTAGkAbgBnAGwAZQBfAF8AUwB5AHMAdABlAG0AUwBpAG4AZwBsAGUABQkBBQAAAEkAdABlAG0AMwARAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQB1AAAAAQEFAAAASQB0AGUAbQAyADAKAAAAkgAAACcBBQAAAFYAYQBsAHUAZQABMgAAAFUAbgBpAHQAeQBFAG4AZwBpAG4AZQBNAGEAdABoAGYALgBfAF8AQQBiAHMAXwBfAFMAeQBzAHQAZQBtAFMAaQBuAGcAbABlAF8AXwBTAHkAcwB0AGUAbQBTAGkAbgBnAGwAZQAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAHYAAAABAQUAAABJAHQAZQBtADIAMAoAAACTAAAAJwEFAAAAVgBhAGwAdQBlAAFHAAAAUwB5AHMAdABlAG0AUwBpAG4AZwBsAGUALgBfAF8AbwBwAF8ARwByAGUAYQB0AGUAcgBUAGgAYQBuAF8AXwBTAHkAcwB0AGUAbQBTAGkAbgBnAGwAZQBfAFMAeQBzAHQAZQBtAFMAaQBuAGcAbABlAF8AXwBTAHkAcwB0AGUAbQBCAG8AbwBsAGUAYQBuAAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAdwAAAAEBBQAAAEkAdABlAG0AMgAwCgAAAJQAAAAnAQUAAABWAGEAbAB1AGUAAVAAAABWAFIAQwBTAEQASwAzAFYAaQBkAGUAbwBDAG8AbQBwAG8AbgBlAG4AdABzAEIAYQBzAGUAQgBhAHMAZQBWAFIAQwBWAGkAZABlAG8AUABsAGEAeQBlAHIALgBfAF8AUwBlAHQAVABpAG0AZQBfAF8AUwB5AHMAdABlAG0AUwBpAG4AZwBsAGUAXwBfAFMAeQBzAHQAZQBtAFYAbwBpAGQABQkBBQAAAEkAdABlAG0AMwARAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQB4AAAAAQEFAAAASQB0AGUAbQAyADAKAAAAlQAAACcBBQAAAFYAYQBsAHUAZQABOAAAAFUAbgBpAHQAeQBFAG4AZwBpAG4AZQBUAGkAbQBlAC4AXwBfAGcAZQB0AF8AcgBlAGEAbAB0AGkAbQBlAFMAaQBuAGMAZQBTAHQAYQByAHQAdQBwAF8AXwBTAHkAcwB0AGUAbQBTAGkAbgBnAGwAZQAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAHkAAAABAQUAAABJAHQAZQBtADIAMAoAAACWAAAAJwEFAAAAVgBhAGwAdQBlAAE8AAAAVgBSAEMAUwBEAEsAMwBDAG8AbQBwAG8AbgBlAG4AdABzAFYAUgBDAFUAcgBsAEkAbgBwAHUAdABGAGkAZQBsAGQALgBfAF8ARwBlAHQAVQByAGwAXwBfAFYAUgBDAFMARABLAEIAYQBzAGUAVgBSAEMAVQByAGwABQkBBQAAAEkAdABlAG0AMwARAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQB6AAAAAQEFAAAASQB0AGUAbQAyADAKAAAAlwAAACcBBQAAAFYAYQBsAHUAZQABPwAAAFMAeQBzAHQAZQBtAEkAbgB0ADMAMgAuAF8AXwBvAHAAXwBBAGQAZABpAHQAaQBvAG4AXwBfAFMAeQBzAHQAZQBtAEkAbgB0ADMAMgBfAFMAeQBzAHQAZQBtAEkAbgB0ADMAMgBfAF8AUwB5AHMAdABlAG0ASQBuAHQAMwAyAAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAewAAAAEBBQAAAEkAdABlAG0AMgAwCgAAAJgAAAAnAQUAAABWAGEAbAB1AGUAAT8AAABWAFIAQwBTAEQASwAzAFYAaQBkAGUAbwBDAG8AbQBwAG8AbgBlAG4AdABzAEIAYQBzAGUAQgBhAHMAZQBWAFIAQwBWAGkAZABlAG8AUABsAGEAeQBlAHIALgBfAF8AUwB0AG8AcABfAF8AUwB5AHMAdABlAG0AVgBvAGkAZAAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAHwAAAABAQUAAABJAHQAZQBtADIAMAoAAACZAAAAJwEFAAAAVgBhAGwAdQBlAAFUAAAAVgBSAEMAUwBEAEsAMwBWAGkAZABlAG8AQwBvAG0AcABvAG4AZQBuAHQAcwBCAGEAcwBlAEIAYQBzAGUAVgBSAEMAVgBpAGQAZQBvAFAAbABhAHkAZQByAC4AXwBfAEwAbwBhAGQAVQBSAEwAXwBfAFYAUgBDAFMARABLAEIAYQBzAGUAVgBSAEMAVQByAGwAXwBfAFMAeQBzAHQAZQBtAFYAbwBpAGQABQkBBQAAAEkAdABlAG0AMwARAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQB9AAAAAQEFAAAASQB0AGUAbQAyADAKAAAAmgAAACcBBQAAAFYAYQBsAHUAZQABKQAAAFMAeQBzAHQAZQBtAFMAaQBuAGcAbABlAC4AXwBfAGcAZQB0AF8ATQBhAHgAVgBhAGwAdQBlAF8AXwBTAHkAcwB0AGUAbQBTAGkAbgBnAGwAZQAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAH4AAAABAQUAAABJAHQAZQBtADIAMAoAAACbAAAAJwEFAAAAVgBhAGwAdQBlAAE+AAAAUwB5AHMAdABlAG0AUwB0AHIAaQBuAGcALgBfAF8ARgBvAHIAbQBhAHQAXwBfAFMAeQBzAHQAZQBtAFMAdAByAGkAbgBnAF8AUwB5AHMAdABlAG0ATwBiAGoAZQBjAHQAXwBfAFMAeQBzAHQAZQBtAFMAdAByAGkAbgBnAAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAfwAAAAEBBQAAAEkAdABlAG0AMgAwCgAAAJwAAAAnAQUAAABWAGEAbAB1AGUAATAAAABVAG4AaQB0AHkARQBuAGcAaQBuAGUARABlAGIAdQBnAC4AXwBfAEwAbwBnAF8AXwBTAHkAcwB0AGUAbQBPAGIAagBlAGMAdABfAF8AUwB5AHMAdABlAG0AVgBvAGkAZAAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAIAAAAABAQUAAABJAHQAZQBtADIAMAoAAACdAAAAJwEFAAAAVgBhAGwAdQBlAAFAAAAAVgBSAEMAUwBEAEsAMwBWAGkAZABlAG8AQwBvAG0AcABvAG4AZQBuAHQAcwBCAGEAcwBlAEIAYQBzAGUAVgBSAEMAVgBpAGQAZQBvAFAAbABhAHkAZQByAC4AXwBfAFAAYQB1AHMAZQBfAF8AUwB5AHMAdABlAG0AVgBvAGkAZAAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAIEAAAABAQUAAABJAHQAZQBtADIAMAoAAACeAAAAJwEFAAAAVgBhAGwAdQBlAAFBAAAAUwB5AHMAdABlAG0ASQBuAHQAMwAyAC4AXwBfAG8AcABfAEUAcQB1AGEAbABpAHQAeQBfAF8AUwB5AHMAdABlAG0ASQBuAHQAMwAyAF8AUwB5AHMAdABlAG0ASQBuAHQAMwAyAF8AXwBTAHkAcwB0AGUAbQBCAG8AbwBsAGUAYQBuAAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAggAAAAEBBQAAAEkAdABlAG0AMgAwCgAAAJ8AAAAnAQUAAABWAGEAbAB1AGUAATYAAABVAG4AaQB0AHkARQBuAGcAaQBuAGUAVABpAG0AZQAuAF8AXwBnAGUAdABfAHQAaQBtAGUAUwBpAG4AYwBlAEwAZQB2AGUAbABMAG8AYQBkAF8AXwBTAHkAcwB0AGUAbQBTAGkAbgBnAGwAZQAFCQEFAAAASQB0AGUAbQAzABEAAAAFBDAEAAAAGQEFAAAASQB0AGUAbQAxAIMAAAABAQUAAABJAHQAZQBtADIAMAoAAACgAAAAJwEFAAAAVgBhAGwAdQBlAAEkAAAAVgBSAEMAUwBEAEsAQgBhAHMAZQBWAFIAQwBVAHIAbAAuAF8AXwBHAGUAdABfAF8AUwB5AHMAdABlAG0AUwB0AHIAaQBuAGcABQkBBQAAAEkAdABlAG0AMwARAAAABQQwBAAAABkBBQAAAEkAdABlAG0AMQCEAAAAAQEFAAAASQB0AGUAbQAyADAKAAAAoQAAACcBBQAAAFYAYQBsAHUAZQABOQAAAFMAeQBzAHQAZQBtAFMAdAByAGkAbgBnAC4AXwBfAEkAcwBOAHUAbABsAE8AcgBFAG0AcAB0AHkAXwBfAFMAeQBzAHQAZQBtAFMAdAByAGkAbgBnAF8AXwBTAHkAcwB0AGUAbQBCAG8AbwBsAGUAYQBuAAUJAQUAAABJAHQAZQBtADMAEQAAAAUEMAQAAAAZAQUAAABJAHQAZQBtADEAhQAAAAEBBQAAAEkAdABlAG0AMgAwCgAAAKIAAAAnAQUAAABWAGEAbAB1AGUAAS4AAABWAFIAQwBTAEQASwBCAGEAcwBlAFYAUgBDAFUAcgBsAC4AXwBfAGcAZQB0AF8ARQBtAHAAdAB5AF8AXwBWAFIAQwBTAEQASwBCAGEAcwBlAFYAUgBDAFUAcgBsAAUJAQUAAABJAHQAZQBtADMAEQAAAAUHBQcFAQELAAAARQBuAHQAcgB5AFAAbwBpAG4AdABzAC8RAAAAATAAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AUwB5AG0AYgBvAGwAVABhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgCjAAAABgIAAAAAAAAAJwEEAAAAdAB5AHAAZQABZgAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AUwB5AG0AYgBvAGwALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiAAEBBwAAAFMAeQBtAGIAbwBsAHMALxIAAAABZgAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AUwB5AG0AYgBvAGwALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiAKQAAAAGCwAAAAAAAAACLxMAAAABKwAAAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4AVQBkAG8AbgBTAHkAbQBiAG8AbAAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ApQAAAAYDAAAAAAAAACcBBAAAAHQAeQBwAGUAARcAAABTAHkAcwB0AGUAbQAuAFMAdAByAGkA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cgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiAF0AXQAsACAAbQBzAGMAbwByAGwAaQBiAAEBDwAAAEUAeABwAG8AcgB0AGUAZABTAHkAbQBiAG8AbABzADAUAAAAHgEAAAYEAAAAAAAAACgBCwAAAHYAaQBkAGUAbwBQAGwAYQB5AGUAcgAoARIAAAB2AGkAZABlAG8AVQBSAEwASQBuAHAAdQB0AEYAaQBlAGwAZAAoAQ0AAABzAHkAbgBjAEYAcgBlAHEAdQBlAG4AYwB5ACgBDQAAAHMAeQBuAGMAVABoAHIAZQBzAGgAbwBsAGQABwUHBQEBEQAAAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhAFQAYQBiAGwAZQAvFQAAAAE2AAAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBVAGQAbwBuAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AHwEAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWwAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAQwAAABTAHkAbgBjAE0AZQB0AGEAZABhAHQAYQAvFgAAAAFsAAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4ASQBuAHQAZQByAGYAYQBjAGUAcwAuAEkAVQBkAG8AbgBTAHkAbgBjAE0AZQB0AGEAZABhAHQAYQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAIAEAAAYEAAAAAAAAAAIvFwAAAAExAAAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBVAGQAbwBuAFMAeQBuAGMATQBlAHQAYQBkAGEAdABhACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAhAQAABgIAAAAAAAAAJwEEAAAAdAB5AHAAZQABFwAAAFMAeQBzAHQAZQBtAC4AUwB0AHIAaQBuAGcALAAgAG0AcwBjAG8AcgBsAGkAYgAnAQQAAABOAGEAbQBlAAEWAAAAXwB2AGkAZABlAG8AUwB0AGEAcgB0AE4AZQB0AHcAbwByAGsAVABpAG0AZQAnAQQAAAB0AHkAcABlAAFsAAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4ASQBuAHQAZQByAGYAYQBjAGUAcwAuAEkAVQBkAG8AbgBTAHkAbgBjAFAAcgBvAHAAZQByAHQAeQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEKAAAAUAByAG8AcABlAHIAdABpAGUAcwAvGAAAAAFsAAAAUwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBHAGUAbgBlAHIAaQBjAC4ATABpAHMAdABgADEAWwBbAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAC4ASQBuAHQAZQByAGYAYQBjAGUAcwAuAEkAVQBkAG8AbgBTAHkAbgBjAFAAcgBvAHAAZQByAHQAeQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAIgEAAAYBAAAAAAAAAAIvGQAAAAExAAAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBVAGQAbwBuAFMAeQBuAGMAUAByAG8AcABlAHIAdAB5ACwAIABWAFIAQwAuAFUA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 + programUnityEngineObjects: [] + serializationDataFormat: 0 diff --git a/Assets/SerializedUdonPrograms/db6380e7c98d9e94bb856b1e1b1cf56c.asset.meta b/Assets/SerializedUdonPrograms/db6380e7c98d9e94bb856b1e1b1cf56c.asset.meta new file mode 100644 index 0000000..71232a4 --- /dev/null +++ b/Assets/SerializedUdonPrograms/db6380e7c98d9e94bb856b1e1b1cf56c.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 850475f8971b7c74885690522b1f4fc7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon.meta b/Assets/Udon.meta new file mode 100644 index 0000000..3337601 --- /dev/null +++ b/Assets/Udon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 65009172270d5124db248f2f61f507af +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor.meta b/Assets/Udon/Editor.meta new file mode 100644 index 0000000..a69054e --- /dev/null +++ b/Assets/Udon/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f7ba6c00dc6a7146aa8c8fe4f152775 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/External.meta b/Assets/Udon/Editor/External.meta new file mode 100644 index 0000000..d0b9574 --- /dev/null +++ b/Assets/Udon/Editor/External.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 713065eccc01a204abcfa8107034ee5b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/External/VRC.Udon.Compiler.dll b/Assets/Udon/Editor/External/VRC.Udon.Compiler.dll new file mode 100644 index 0000000..934fec2 --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.Compiler.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99a71ee34d4780c8f4afce5158ede7cc36ab05d420f16d29eef8060eef21748a +size 23040 diff --git a/Assets/Udon/Editor/External/VRC.Udon.Compiler.dll.meta b/Assets/Udon/Editor/External/VRC.Udon.Compiler.dll.meta new file mode 100644 index 0000000..97ab0bb --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.Compiler.dll.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 8b6535096cfa29340897276abbdd015f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/External/VRC.Udon.EditorBindings.dll b/Assets/Udon/Editor/External/VRC.Udon.EditorBindings.dll new file mode 100644 index 0000000..520b085 --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.EditorBindings.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ada5ac63b604f42e6dff5fa0e3e4da16007e82d05926fa002abd9ce26def05b +size 86528 diff --git a/Assets/Udon/Editor/External/VRC.Udon.EditorBindings.dll.meta b/Assets/Udon/Editor/External/VRC.Udon.EditorBindings.dll.meta new file mode 100644 index 0000000..0cacb7a --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.EditorBindings.dll.meta @@ -0,0 +1,46 @@ +fileFormatVersion: 2 +guid: 585dd63e377866248b16bdba915820ed +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/External/VRC.Udon.Graph.dll b/Assets/Udon/Editor/External/VRC.Udon.Graph.dll new file mode 100644 index 0000000..350cd45 --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.Graph.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59fd193e74399fbffb23d5efe81495eb9b0cc8cb7197e31e6bd735e1b255f3a9 +size 9007104 diff --git a/Assets/Udon/Editor/External/VRC.Udon.Graph.dll.meta b/Assets/Udon/Editor/External/VRC.Udon.Graph.dll.meta new file mode 100644 index 0000000..8eb651c --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.Graph.dll.meta @@ -0,0 +1,46 @@ +fileFormatVersion: 2 +guid: b335798a4f28bec40ba9b3d4a15acee7 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/External/VRC.Udon.UAssembly.dll b/Assets/Udon/Editor/External/VRC.Udon.UAssembly.dll new file mode 100644 index 0000000..2b36f53 --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.UAssembly.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34a5b14497e86c2c14869d3ecc23a1c7ffc02e8ee4177e867f79e1c8350edcc2 +size 42496 diff --git a/Assets/Udon/Editor/External/VRC.Udon.UAssembly.dll.meta b/Assets/Udon/Editor/External/VRC.Udon.UAssembly.dll.meta new file mode 100644 index 0000000..34a678e --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.UAssembly.dll.meta @@ -0,0 +1,46 @@ +fileFormatVersion: 2 +guid: 21dcba1a47cc8c84381629950b692129 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/External/VRC.Udon.VRCGraphModules.dll b/Assets/Udon/Editor/External/VRC.Udon.VRCGraphModules.dll new file mode 100644 index 0000000..0d7a9ca --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.VRCGraphModules.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cecdb6b21f437b0f350c1dbcab420c3cdf46cc3f256829713a4ad0b0c583d98 +size 416256 diff --git a/Assets/Udon/Editor/External/VRC.Udon.VRCGraphModules.dll.meta b/Assets/Udon/Editor/External/VRC.Udon.VRCGraphModules.dll.meta new file mode 100644 index 0000000..61eddfd --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.VRCGraphModules.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 161140ecae894b84ba7bdd6e44ff4371 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/External/VRC.Udon.VRCTypeResolverModules.dll b/Assets/Udon/Editor/External/VRC.Udon.VRCTypeResolverModules.dll new file mode 100644 index 0000000..a708c14 --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.VRCTypeResolverModules.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ba59c92698e7f0ed818842e4534cc0919f0442636fb8b3a5aa2946b951586f7 +size 13824 diff --git a/Assets/Udon/Editor/External/VRC.Udon.VRCTypeResolverModules.dll.meta b/Assets/Udon/Editor/External/VRC.Udon.VRCTypeResolverModules.dll.meta new file mode 100644 index 0000000..527a4f4 --- /dev/null +++ b/Assets/Udon/Editor/External/VRC.Udon.VRCTypeResolverModules.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 19cff77330d183441a69ff6c69e07629 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/GraphModules.meta b/Assets/Udon/Editor/GraphModules.meta new file mode 100644 index 0000000..4c54e10 --- /dev/null +++ b/Assets/Udon/Editor/GraphModules.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9163c50fd2ce4dc4db94582224a3b122 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/GraphModules/VRCInstantiateNodeRegistry.cs b/Assets/Udon/Editor/GraphModules/VRCInstantiateNodeRegistry.cs new file mode 100644 index 0000000..d7a93e9 --- /dev/null +++ b/Assets/Udon/Editor/GraphModules/VRCInstantiateNodeRegistry.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using VRC.Udon.Graph.Interfaces; +using VRC.Udon.Graph.Attributes; +using VRC.Udon.Graph.NodeRegistries; + +[assembly: UdonGraphNodeRegistry(typeof(VRCInstantiateNodeRegistry), "VRCInstantiateNodeRegistry")] +namespace VRC.Udon.Graph.NodeRegistries +{ + public class VRCInstantiateNodeRegistry : BaseNodeRegistry + { + protected override Dictionary NextRegistries => _nextRegistries; + private static readonly Dictionary _nextRegistries = new Dictionary(); + + protected override Dictionary NodeDefinitions => _nodeDefinitions; + + private static readonly Dictionary _nodeDefinitions = new Dictionary + { + { + "VRCInstantiate.__Instantiate__UnityEngineGameObject__UnityEngineGameObject", + new UdonNodeDefinition( + "VRChat Instantiate", + "VRCInstantiate.__Instantiate__UnityEngineGameObject__UnityEngineGameObject", + typeof(UnityEngine.Object), + new [] + { + new UdonNodeParameter + { + name = "original", + type = typeof(UnityEngine.GameObject), + parameterType = UdonNodeParameter.ParameterType.IN + }, + new UdonNodeParameter + { + name = "clone", + type = typeof(UnityEngine.GameObject), + parameterType = UdonNodeParameter.ParameterType.OUT + } + }, + new string[] { }, + new string[] { }, + new object[] { }, + true + ) + } + }; + } +} diff --git a/Assets/Udon/Editor/GraphModules/VRCInstantiateNodeRegistry.cs.meta b/Assets/Udon/Editor/GraphModules/VRCInstantiateNodeRegistry.cs.meta new file mode 100644 index 0000000..83b61e3 --- /dev/null +++ b/Assets/Udon/Editor/GraphModules/VRCInstantiateNodeRegistry.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cac80b40f57c41d4b941dc5059271583 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources.meta b/Assets/Udon/Editor/ProgramSources.meta new file mode 100644 index 0000000..9db817e --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 56226d3778b7b2848bdceafeedfa7e0e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/Attributes.meta b/Assets/Udon/Editor/ProgramSources/Attributes.meta new file mode 100644 index 0000000..bae9893 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/Attributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 516ce23587a76704f8ae9b50f3e59ac5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/Attributes/UdonProgramSourceNewMenuAttribute.cs b/Assets/Udon/Editor/ProgramSources/Attributes/UdonProgramSourceNewMenuAttribute.cs new file mode 100644 index 0000000..17be460 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/Attributes/UdonProgramSourceNewMenuAttribute.cs @@ -0,0 +1,18 @@ +using System; + +namespace VRC.Udon.Editor.ProgramSources.Attributes +{ + [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] + public class UdonProgramSourceNewMenuAttribute : Attribute + { + public Type Type { get; } + public string DisplayName { get; } + + public UdonProgramSourceNewMenuAttribute(Type type, string displayName) + { + Type = type; + DisplayName = displayName; + } + } +} + diff --git a/Assets/Udon/Editor/ProgramSources/Attributes/UdonProgramSourceNewMenuAttribute.cs.meta b/Assets/Udon/Editor/ProgramSources/Attributes/UdonProgramSourceNewMenuAttribute.cs.meta new file mode 100644 index 0000000..ea45c1b --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/Attributes/UdonProgramSourceNewMenuAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e5ced9511d591140b191bbd9e948e61 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/SerializedUdonProgramAssetEditor.cs b/Assets/Udon/Editor/ProgramSources/SerializedUdonProgramAssetEditor.cs new file mode 100644 index 0000000..33ecd07 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/SerializedUdonProgramAssetEditor.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using UnityEditor; +using VRC.Udon.Common.Interfaces; +using VRC.Udon.ProgramSources; +using VRC.Udon.Serialization.OdinSerializer; + +namespace VRC.Udon.Editor.ProgramSources +{ + [CustomEditor(typeof(SerializedUdonProgramAsset))] + public class SerializedUdonProgramAssetEditor : UnityEditor.Editor + { + private SerializedProperty _serializedProgramBytesStringSerializedProperty; + private SerializedProperty _serializationDataFormatSerializedProperty; + + private void OnEnable() + { + _serializedProgramBytesStringSerializedProperty = serializedObject.FindProperty("serializedProgramBytesString"); + _serializationDataFormatSerializedProperty = serializedObject.FindProperty("serializationDataFormat"); + } + + public override void OnInspectorGUI() + { + DrawSerializationDebug(); + } + + [Conditional("UDON_DEBUG")] + private void DrawSerializationDebug() + { + EditorGUILayout.LabelField($"DataFormat: {(DataFormat)_serializationDataFormatSerializedProperty.enumValueIndex}"); + + if(string.IsNullOrEmpty(_serializedProgramBytesStringSerializedProperty.stringValue)) + { + return; + } + + if(_serializationDataFormatSerializedProperty.enumValueIndex == (int)DataFormat.JSON) + { + using(new EditorGUI.DisabledScope(true)) + { + EditorGUILayout.TextArea(System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(_serializedProgramBytesStringSerializedProperty.stringValue))); + } + } + else + { + using(new EditorGUI.DisabledScope(true)) + { + SerializedUdonProgramAsset serializedUdonProgramAsset = (SerializedUdonProgramAsset)target; + IUdonProgram udonProgram = serializedUdonProgramAsset.RetrieveProgram(); + byte[] serializedBytes = SerializationUtility.SerializeValue(udonProgram, DataFormat.JSON, out List _); + EditorGUILayout.TextArea(System.Text.Encoding.UTF8.GetString(serializedBytes)); + } + } + } + } +} diff --git a/Assets/Udon/Editor/ProgramSources/SerializedUdonProgramAssetEditor.cs.meta b/Assets/Udon/Editor/ProgramSources/SerializedUdonProgramAssetEditor.cs.meta new file mode 100644 index 0000000..e72c03a --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/SerializedUdonProgramAssetEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e1b5b45f24b268b42826fc5c5497dc15 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram.meta b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram.meta new file mode 100644 index 0000000..d2102e2 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bdc4fbcfbda0aa74ba1360d53fde5928 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAsset.cs b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAsset.cs new file mode 100644 index 0000000..0045931 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAsset.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using JetBrains.Annotations; +using UnityEditor; +using UnityEngine; +using VRC.Udon.Editor; +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 delegate void AssembleDelegate(bool success, string assembly); + public event AssembleDelegate OnAssemble; + + protected override void DrawProgramSourceGUI(UdonBehaviour udonBehaviour, ref bool dirty) + { + DrawAssemblyTextArea(!Application.isPlaying, ref dirty); + DrawAssemblyErrorTextArea(); + + base.DrawProgramSourceGUI(udonBehaviour, ref dirty); + } + + 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); + } + } + + } +} diff --git a/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAsset.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAsset.cs.meta new file mode 100644 index 0000000..c2d8a2b --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAsset.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22203902d63dec94194fefc3e155c43b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetEditor.cs b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetEditor.cs new file mode 100644 index 0000000..a6b6c85 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetEditor.cs @@ -0,0 +1,9 @@ +using UnityEditor; + +namespace VRC.Udon.Editor.ProgramSources +{ + [CustomEditor(typeof(UdonAssemblyProgramAsset))] + public class UdonAssemblyProgramAssetEditor : UdonProgramAssetEditor + { + } +} diff --git a/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetEditor.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetEditor.cs.meta new file mode 100644 index 0000000..e7fb7fe --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3df823f3ab561fc43bcb81286e14b91d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetImporter.cs b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetImporter.cs new file mode 100644 index 0000000..409c2c6 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetImporter.cs @@ -0,0 +1,27 @@ +using System.IO; +using JetBrains.Annotations; +using UnityEditor; +using UnityEditor.Experimental.AssetImporters; +using UnityEngine; + +namespace VRC.Udon.Editor.ProgramSources +{ + [ScriptedImporter(1, "uasm")] + [UsedImplicitly] + public class UdonAssemblyProgramAssetImporter : ScriptedImporter + { + public override void OnImportAsset(AssetImportContext ctx) + { + UdonAssemblyProgramAsset udonAssemblyProgramAsset = ScriptableObject.CreateInstance(); + 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); + } + } +} diff --git a/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetImporter.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetImporter.cs.meta new file mode 100644 index 0000000..f3951da --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAssetImporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c0638314c289c24193b47d1c53c9fca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram.meta new file mode 100644 index 0000000..4656cba --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c6dab170f134274597a46948afbeca8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI.meta new file mode 100644 index 0000000..86a4bc3 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c71d92e0517c54f4497d8723964647b1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView.meta new file mode 100644 index 0000000..b49f918 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d4407e68fb16a84b98b1731bc369172 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields.meta new file mode 100644 index 0000000..72e79a4 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f6fb8c8470693f4bbd2502cd1b997f0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/ByteField.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/ByteField.cs new file mode 100644 index 0000000..29bd383 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/ByteField.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Experimental.UIElements; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI +{ + public class ByteField : TextInputFieldBase + { + public ByteField() + : base(3, char.MinValue) + { + this.AddToClassList("UdonValueField"); + this.isDelayed = true; + } + + public override byte value + { + get + { + return base.value; + } + set + { + base.value = value; + this.text = value.ToString(); + } + } + + protected override void ExecuteDefaultAction(EventBase evt) + { + base.ExecuteDefaultAction(evt); + + if (this.text.Length > 0) + { + try + { + + var byteValue = Convert.ToByte(this.text); + this.value = byteValue; + } + catch (Exception e) + { + Debug.LogError(e.Message); + } + } + + } + + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/ByteField.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/ByteField.cs.meta new file mode 100644 index 0000000..06d12e3 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/ByteField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c66f97d5a5a38cb478fd4df11ece7be7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/CharField.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/CharField.cs new file mode 100644 index 0000000..bed9fd6 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/CharField.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Experimental.UIElements; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI +{ + public class CharField : TextInputFieldBase + { + public CharField() + : base(1, char.MinValue) + { + this.AddToClassList("UdonValueField"); + } + + public override char value + { + get + { + return base.value; + } + set + { + base.value = value; + this.text = value.ToString(); + } + } + + protected override void ExecuteDefaultAction(EventBase evt) + { + base.ExecuteDefaultAction(evt); + + if (this.text.Length > 0) + { + this.value = this.text.ToCharArray()[0]; + } + + } + + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/CharField.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/CharField.cs.meta new file mode 100644 index 0000000..f4388e8 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/CharField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 602ffcf431b3e4f41a18bd868751439a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/LayerMaskField.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/LayerMaskField.cs new file mode 100644 index 0000000..9959728 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/LayerMaskField.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEditor.Experimental.UIElements; +using UnityEngine; +using UnityEngine.Experimental.UIElements; +using UIElements = UnityEditor.Experimental.UIElements; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI +{ + public class LayerMaskField : BaseField + { + public LayerMaskField() + { + // Set up styling + AddToClassList("UdonValueField"); + + // Create LayerMask Editor and listen for changes + UIElements.LayerMaskField field = new UIElements.LayerMaskField(); + field.OnValueChanged(e => + { + this.value = e.newValue; + }); + + Add(field); + } + + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/LayerMaskField.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/LayerMaskField.cs.meta new file mode 100644 index 0000000..67438a2 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/LayerMaskField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 42d9183d7c7ce67448d1e010456e36f9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/QuaternionField.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/QuaternionField.cs new file mode 100644 index 0000000..049e0a7 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/QuaternionField.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEditor.Experimental.UIElements; +using UnityEngine; +using UnityEngine.Experimental.UIElements; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI +{ + public class QuaternionField : BaseField + { + public QuaternionField() + { + // Set up styling + AddToClassList("UdonValueField"); + + // Create Vector4 Editor and listen for changes + Vector4Field field = new Vector4Field(); + field.OnValueChanged( + e => + value = new Quaternion(e.newValue.x, e.newValue.y, e.newValue.z, e.newValue.w) + ); + Add(field); + } + + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/QuaternionField.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/QuaternionField.cs.meta new file mode 100644 index 0000000..fefc9cf --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/QuaternionField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c96407d2b7698c4c8a0476efa2c765d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/VRCUrlField.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/VRCUrlField.cs new file mode 100644 index 0000000..e85fcc0 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/VRCUrlField.cs @@ -0,0 +1,35 @@ +using UnityEngine.Experimental.UIElements; +using VRC.SDKBase; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI +{ + public class VRCUrlField : TextInputFieldBase + { + public VRCUrlField() + : base(-1, char.MinValue) + { + AddToClassList("UdonValueField"); + RegisterCallback(OnBlur); + } + + private void OnBlur(BlurEvent evt) + { + base.value = new VRCUrl(text); + } + + public override VRCUrl value + { + get => base.value; + set + { + base.value = value; + text = value?.Get() ?? string.Empty; + } + } + + ~VRCUrlField() + { + UnregisterCallback(OnBlur); + } + } +} diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/VRCUrlField.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/VRCUrlField.cs.meta new file mode 100644 index 0000000..28d6b84 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/Fields/VRCUrlField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eeb751ae1c234a04291c5039626f3470 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements.meta new file mode 100644 index 0000000..f84b368 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85d42af61040c754c808c387b736a441 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/GraphElementExtension.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/GraphElementExtension.cs new file mode 100644 index 0000000..deb90e3 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/GraphElementExtension.cs @@ -0,0 +1,79 @@ +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.Experimental.UIElements; +using VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView; + +namespace UnityEditor.Experimental.UIElements.GraphView +{ + public static class GraphElementExtension + { + public static void Reserialize(this GraphElement element) + { + MarkDirty(); + + var evt = new Event() + { + type = EventType.ExecuteCommand, + commandName = UdonGraphCommands.Reserialize, + }; + using (var e = ExecuteCommandEvent.GetPooled(evt)) + { + element.SendEvent(e); + } + } + + public static void Reload(this GraphElement element) + { + var evt = new Event() + { + type = EventType.ExecuteCommand, + commandName = UdonGraphCommands.Reload + }; + using (var e = ExecuteCommandEvent.GetPooled(evt)) + { + element.SendEvent(e); + } + } + + public static void SaveNewData(this GraphElement element) + { + var evt = new Event() + { + type = EventType.ExecuteCommand, + commandName = UdonGraphCommands.SaveNewData + }; + using (var e = ExecuteCommandEvent.GetPooled(evt)) + { + element.SendEvent(e); + } + + MarkDirty(); + } + + public static void MarkDirty() + { + if (!EditorApplication.isPlaying) + { + EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + } + } + + public static Vector2 GetSnappedPosition(Vector2 position) + { + // don't snap at 0 size + var snap = Settings.GridSnapSize; + if (snap == 0) return position; + + position.x = (float)System.Math.Round(position.x / snap) * snap; + position.y = (float)System.Math.Round(position.y / snap) * snap; + + return position; + } + + public static Rect GetSnappedRect(Rect rect) + { + rect.position = GetSnappedPosition(rect.position); + return rect; + } + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/GraphElementExtension.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/GraphElementExtension.cs.meta new file mode 100644 index 0000000..ebc4db2 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/GraphElementExtension.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 469db50616185d04e8a46dcd75db12d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayEditor.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayEditor.cs new file mode 100644 index 0000000..de230ec --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayEditor.cs @@ -0,0 +1,73 @@ +using UnityEngine.Experimental.UIElements; +using System; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView +{ + public class UdonArrayEditor : VisualElement + { + private IArrayProvider _inspector; + private Button _editArrayButton; + private System.Action _setValueCallback; + private Type _type; + private object _value; + private bool _inspectorOpen = false; + + public UdonArrayEditor(Type t, System.Action valueChangedAction, object value) + { + _setValueCallback = valueChangedAction; + _value = value; + _type = t.GetElementType(); + + _editArrayButton = new Button(EditArray) + { + text = "Edit", + name = "array-editor", + }; + + Add(_editArrayButton); + } + + private void EditArray() + { + if (_inspector == null) + { + // Create it new + Type typedArrayInspector = (typeof(UdonArrayInspector<>)).MakeGenericType(_type); + _inspector = (Activator.CreateInstance(typedArrayInspector, null, _value) as IArrayProvider); + + Add(_inspector as VisualElement); + _inspectorOpen = true; + _editArrayButton.text = "Save"; + return; + } + else + { + // Update Values when 'Save' is clicked + if(_inspectorOpen) + { + // Update Values + var values = _inspector.GetValues(); + _setValueCallback(values); + + // Remove Inspector + _inspector.RemoveFromHierarchy(); + + // Update Button Text + _editArrayButton.text = "Edit"; + _inspectorOpen = false; + return; + } + else + { + // Inspector exists, it's just removed + _inspectorOpen = true; + Add(_inspector as VisualElement); + _editArrayButton.text = "Save"; + } + } + + + + } + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayEditor.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayEditor.cs.meta new file mode 100644 index 0000000..135a415 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f257a6eeae213a4db991d486cace003 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayInspector.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayInspector.cs new file mode 100644 index 0000000..132a043 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayInspector.cs @@ -0,0 +1,150 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.Experimental.UIElements; +using UnityEditor.Experimental.UIElements; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView +{ + public class UdonArrayInspector : VisualElement, IArrayProvider + { + private ScrollView _scroller; + private VisualContainer _container; + private List _fields = new List(); + private IntegerField _sizeField; + private System.Action _setValueCallback; + + public UdonArrayInspector(System.Action valueChangedAction, object value) + { + _setValueCallback = valueChangedAction; + + AddToClassList("input-inspector"); + var resizeContainer = new VisualElement() + { + name = "resize-container", + }; + resizeContainer.Add(new Label("size")); + + _sizeField = new IntegerField(); + _sizeField.isDelayed = true; + _sizeField.OnValueChanged((evt) => + { + ResizeTo(evt.newValue); + }); + resizeContainer.Add(_sizeField); + Add(resizeContainer); + + _scroller = new ScrollView() + { + name = "array-scroll", + }; + Add(_scroller); + + _container = new VisualContainer(); + _scroller.SetContents(_container); + + if (value == null) + { + // Can't show if array is empty + _sizeField.value = 0; + return; + } + else + { + IEnumerable values = (value as IEnumerable); + if (values == null) + { + Debug.LogError($"Couldn't convert {value} to {typeof(T).ToString()} Array"); + return; + } + + // Populate fields and their values from passed-in array + _fields = new List(); + foreach (var item in values) + { + var field = GetValueField(item); + _fields.Add(field); + + _container.Add(field); + } + + _sizeField.value = values.Count(); + } + + } + + private void ResizeTo(int newValue) + { + _sizeField.value = newValue; + + // Create from scratch if currentFields are null + if(_fields == null) + { + Debug.Log($"Creating from Scratch"); + _fields = new List(); + for (int i = 0; i < newValue; i++) + { + var field = GetValueField(null); + _fields.Add(field); + _container.Add(field as VisualElement); + } + return; + } + + // Shrink list if new value is less than old one + if(newValue < _fields.Count) + { + for (int i = _fields.Count - 1; i >= newValue; i--) + { + (_fields[i] as VisualElement).RemoveFromHierarchy(); + _fields.RemoveAt(i); + } + MarkDirtyRepaint(); + return; + } + + // Expand list if new value is more than old one. + if(newValue > _fields.Count) + { + int numberToAdd = newValue - _fields.Count; + for (int i = 0; i < numberToAdd; i++) + { + var field = GetValueField(null); + if (field == null) + { + Debug.LogWarning($"Sorry, can't edit object of type {typeof(T).ToString()} yet."); + return; + } + _fields.Add(field); + + _container.Add(field as VisualElement); + } + MarkDirtyRepaint(); + return; + } + } + + private VisualElement GetValueField(object value) + { + return UdonFieldFactory.CreateField(typeof(T), value, _setValueCallback); + } + + public object GetValues() + { + var result = new List(); + for (int i = 0; i < _fields.Count; i++) + { + var f = (_fields[i] as INotifyValueChanged); + result.Add(f.value); + } + return result.ToArray(); + } + + } + + public interface IArrayProvider + { + object GetValues(); + void RemoveFromHierarchy(); // in VisualElement + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayInspector.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayInspector.cs.meta new file mode 100644 index 0000000..1a535cb --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonArrayInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4f0ade55ae13b6468a765826f1f2540 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonComment.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonComment.cs new file mode 100644 index 0000000..c67d726 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonComment.cs @@ -0,0 +1,192 @@ +using System; + +using UnityEngine; +using UnityEditor.Experimental.UIElements.GraphView; +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleSheets; +using UnityEditor; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView +{ + + public class UdonComment : UdonGraphElement, IUdonGraphElementDataProvider + { + private VisualElement _mainContainer; + private Label _label; + private TextField _textField; + private CustomData _customData = new CustomData(); + private UdonGraph _graph; + public UdonGroup group; + + // Called from Context menu + public static UdonComment Create(string value, Rect position, UdonGraph graph) + { + var comment = new UdonComment("", graph); + + // make sure rect size is not 0 + position.width = position.width > 0 ? position.width : 128; + position.height = position.height > 0 ? position.height : 40; + + comment._customData.layout = position; + comment._customData.title = value; + + comment.UpdateFromData(); + graph.MarkSceneDirty(); + + return comment; + } + + public static UdonComment Create(UdonGraphElementData elementData, UdonGraph graph) + { + var comment = new UdonComment(elementData.jsonData, graph); + + comment.UpdateFromData(); + graph.MarkSceneDirty(); + + return comment; + } + + private UdonComment(string jsonData, UdonGraph graph) + { + title = "Comment"; + name = "comment"; + _graph = graph; + + capabilities |= Capabilities.Selectable | Capabilities.Movable | Capabilities.Deletable | Capabilities.Resizable; + pickingMode = PickingMode.Ignore; + + type = UdonGraphElementType.UdonComment; + + if(!string.IsNullOrEmpty(jsonData)) + { + EditorJsonUtility.FromJsonOverwrite(jsonData, _customData); + } + + _mainContainer = new VisualElement(); + _mainContainer.StretchToParentSize(); + _mainContainer.AddToClassList("mainContainer"); + Add(_mainContainer); + + _label = new Label(); + _label.RegisterCallback(OnLabelClick); + _mainContainer.Add(_label); + + _textField = new TextField(1000, true, false, '*'); + _textField.isDelayed = true; + // Support IME + _textField.RegisterCallback(evt =>{ Input.imeCompositionMode = IMECompositionMode.On;}); + _textField.RegisterCallback(evt => { + SetText(_textField.text); + Input.imeCompositionMode = IMECompositionMode.Auto; + SwitchToEditMode(false); + }); + + _textField.OnValueChanged((evt) => + { + SetText(evt.newValue); + SwitchToEditMode(false); + }); + } + + private void UpdateFromData() + { + if(_customData != null) + { + layer = _customData.layer; + if(string.IsNullOrEmpty(_customData.uid)) + { + _customData.uid = Guid.NewGuid().ToString(); + } + uid = _customData.uid; + + SetPosition(_customData.layout); + SetText(_customData.title); + } + } + + protected override void OnStyleResolved(ICustomStyle style) + { + base.OnStyleResolved(style); + // Something is forcing style! Resetting a few things here, grrr. + + this.style.borderBottomWidth = 1; + + var resizer = this.Q(null, "resizer"); + if(resizer != null) + { + resizer.style.paddingTop = 0; + resizer.style.paddingLeft = 0; + } + } + + public override void SetPosition(Rect newPos) + { + newPos = GraphElementExtension.GetSnappedRect(newPos); + base.SetPosition(newPos); + } + + public override void UpdatePresenterPosition() + { + base.UpdatePresenterPosition(); + _customData.layout = GraphElementExtension.GetSnappedRect(GetPosition()); + this.SaveNewData(); + } + + private double lastClickTime; + private const double doubleClickSpeed = 0.5; + + private void OnLabelClick(MouseDownEvent evt) + { + var newTime = UnityEditor.EditorApplication.timeSinceStartup; + if(newTime - lastClickTime < doubleClickSpeed) + { + SwitchToEditMode(true); + } + lastClickTime = newTime; + } + + private void SwitchToEditMode(bool switchingToEdit) + { + if (switchingToEdit) + { + _mainContainer.Remove(_label); + + _textField.value = _label.text; + _mainContainer.Add(_textField); + _textField.Focus(); + _textField.SelectAll(); + } + else + { + _mainContainer.Remove(_textField); + _mainContainer.Add(_label); + } + MarkDirtyRepaint(); + } + + public void SetText(string value) + { + Undo.RecordObject(_graph.graphProgramAsset, "Rename Comment"); + value = value.TrimEnd(); + _customData.title = value; + _label.text = value; + _graph.SaveNewData(); + MarkDirtyRepaint(); + } + + public UdonGraphElementData GetData() + { + return new UdonGraphElementData(UdonGraphElementType.UdonComment, uid, EditorJsonUtility.ToJson(_customData)); + } + + public class CustomData + { + public string uid; + public Rect layout; + public string title = "Comment"; + public int layer; + public Color elementTypeColor; + } + + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonComment.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonComment.cs.meta new file mode 100644 index 0000000..2840e34 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonComment.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7e5916b8dd19e4445a9156a457b82ee4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGraphElement.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGraphElement.cs new file mode 100644 index 0000000..ab43292 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGraphElement.cs @@ -0,0 +1,51 @@ +using System; + +using UnityEngine; +using UnityEditor.Experimental.UIElements.GraphView; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView +{ + public class UdonGraphElement : GraphElement + { + // Upgrade note - persistenceKey turns into viewDataKey in Unity 2019, this getter will make that transition easier + public string uid { get => persistenceKey; set => persistenceKey = value; } + internal UdonGraphElementType type = UdonGraphElementType.GraphElement; + + internal UdonGraphElement() + { + + } + + // save this update to the asset + public override void UpdatePresenterPosition() + { + base.UpdatePresenterPosition(); + this.Reserialize(); + } + + } + + public interface IUdonGraphElementDataProvider + { + UdonGraphElementData GetData(); + } + + [Serializable] + public class GraphRect + { + public float x; + public float y; + public float width; + public float height; + + public GraphRect(Rect input) + { + this.x = Mathf.Round(input.x); + this.y = Mathf.Round(input.y); + this.width = Mathf.Round(input.width); + this.height = Mathf.Round(input.height); + } + + public Rect rect => new Rect(this.x, this.y, this.width, this.height); + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGraphElement.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGraphElement.cs.meta new file mode 100644 index 0000000..1137de2 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGraphElement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba3ecc4c46929404d8c2ec920743b823 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGroup.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGroup.cs new file mode 100644 index 0000000..ad96879 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGroup.cs @@ -0,0 +1,191 @@ +using System; + +using UnityEngine; +using UnityEditor.Experimental.UIElements.GraphView; +using System.Collections.Generic; +using UnityEditor; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView +{ + + public class UdonGroup : Group, IUdonGraphElementDataProvider + { + + public string uid; + private CustomData _customData = new CustomData(); + private UdonGraph _graph; + + public static UdonGroup Create(string value, Rect position, UdonGraph graph) + { + var group = new UdonGroup("", graph); + + group.uid = Guid.NewGuid().ToString(); + + // make sure rect size is not 0 + position.width = position.width > 0 ? position.width : 128; + position.height = position.height > 0 ? position.height : 128; + + group._customData.uid = group.uid; + group._customData.layout = position; + group._customData.title = value; + + return group; + } + + public static UdonGroup Create(UdonGraphElementData elementData, UdonGraph graph) + { + return new UdonGroup(elementData.jsonData, graph); + } + + // current order of operations issue when creating a group from the context menu means this isn't set until first save. This allows us to force it. + public void UpdateDataId() + { + _customData.uid = uid; + } + + // Build a Group from jsonData, save to userData + private UdonGroup(string jsonData, UdonGraph graph) + { + title = "Group"; + _graph = graph; + + if (!string.IsNullOrEmpty(jsonData)) + { + EditorJsonUtility.FromJsonOverwrite(jsonData, _customData); + } + } + + public override void OnPersistentDataReady() + { + base.OnPersistentDataReady(); + if(_customData != null) + { + // Propagate data to useful places + title = _customData.title; + layer = _customData.layer; + if (string.IsNullOrEmpty(_customData.uid)) + { + _customData.uid = Guid.NewGuid().ToString(); + } + uid = _customData.uid; + + SetPosition(_customData.layout); + + // Add all elements from graph to self + var childUIDs = _customData.containedElements; + if (childUIDs != null) + { + foreach (var item in childUIDs) + { + var childNode = _graph.GetElementByGuid(item); + if (childNode != null) + { + if (!ContainsElement(childNode)) + { + AddElement(childNode); + // nodes can wind up behind the group since they're added first + childNode.BringToFront(); + } + } + } + } + } + } + + public bool containsElement(string uid) + { + return _customData.containedElements.Contains(uid); + } + + public override void SetPosition(Rect newPos) + { + newPos = GraphElementExtension.GetSnappedRect(newPos); + base.SetPosition(newPos); + } + + // Save data to asset after new position set + public override void UpdatePresenterPosition() + { + base.UpdatePresenterPosition(); + _customData.layout = GraphElementExtension.GetSnappedRect(GetPosition()); + this.SaveNewData(); + } + + // Save data to asset after rename + protected override void OnGroupRenamed(string oldName, string newName) + { + // limit name to 100 characters + title = newName.Substring(0, Mathf.Min(newName.Length, 100)); + _customData.title = title; + this.SaveNewData(); + } + + protected override void OnElementsAdded(IEnumerable elements) + { + base.OnElementsAdded(elements); + foreach (var element in elements) + { + if (!_customData.containedElements.Contains(element.persistenceKey)) + { + // don't add StackNode children directly to group, messes up reload + if(!(element.parent is UdonStackNode)) + { + _customData.containedElements.Add(element.persistenceKey); + } + } + + // Set group variable on UdonNodes + if (element is UdonNode) + { + (element as UdonNode).group = this; + } + if (element is UdonComment) + { + (element as UdonComment).group = this; + } + } + this.SaveNewData(); + } + + protected override void OnElementsRemoved(IEnumerable elements) + { + base.OnElementsRemoved(elements); + foreach (var element in elements) + { + if (_customData.containedElements.Contains(element.persistenceKey)) + { + _customData.containedElements.Remove(element.persistenceKey); + if(element is UdonNode) + { + (element as UdonNode).group = null; + } + else if (element is UdonComment) + { + (element as UdonComment).group = null; + } + } + } + this.SaveNewData(); + } + + public override bool AcceptsElement(GraphElement element, ref string reasonWhyNotAccepted) + { + return base.AcceptsElement(element, ref reasonWhyNotAccepted); + } + + public UdonGraphElementData GetData() + { + return new UdonGraphElementData(UdonGraphElementType.UdonGroup, uid, EditorJsonUtility.ToJson(_customData)); + } + + public class CustomData + { + public string uid; + public Rect layout; + public List containedElements = new List(); + public string title; + public int layer; + public Color elementTypeColor; + } + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGroup.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGroup.cs.meta new file mode 100644 index 0000000..291451b --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b8045222a10ce04b815642b9cd5ca17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonMinimap.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonMinimap.cs new file mode 100644 index 0000000..ef07b00 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonMinimap.cs @@ -0,0 +1,63 @@ +using System; +using UnityEditor.Experimental.UIElements.GraphView; +using UnityEngine; +using UnityEngine.Experimental.UIElements; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView +{ + public class UdonMinimap : MiniMap + { + private CustomData _customData = new CustomData(); + private UdonGraph _graph; + + public UdonMinimap(UdonGraph graph) + { + _graph = graph; + + name = "UdonMap"; + maxWidth = 200; + maxHeight = 100; + anchored = false; + SetPosition(_customData.layout); + } + + private void SaveNewData() + { + if (!_graph.IsReloading) + { + _graph.SaveNewData(); + } + } + + public void SetVisible(bool value) + { + visible = value; + _customData.visible = value; + SaveNewData(); + } + + public override void UpdatePresenterPosition() + { + _customData.layout = GetPosition(); + SaveNewData(); + } + + public UdonGraphElementData GetData() + { + return new UdonGraphElementData(UdonGraphElementType.Minimap, persistenceKey, JsonUtility.ToJson(_customData)); + } + + internal void LoadData(UdonGraphElementData data) + { + JsonUtility.FromJsonOverwrite(data.jsonData, _customData); + SetPosition(_customData.layout); + visible = _customData.visible; + } + + public class CustomData + { + public bool visible = true; + public Rect layout = new Rect(new Vector2(10, 20), Vector2.zero); + } + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonMinimap.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonMinimap.cs.meta new file mode 100644 index 0000000..dc27107 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonMinimap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b006d67642298f04e895b6709ef12429 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonNode.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonNode.cs new file mode 100644 index 0000000..22f1dff --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonNode.cs @@ -0,0 +1,877 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using UnityEngine; +using UnityEditor.Experimental.UIElements.GraphView; +using EditorUI = UnityEditor.Experimental.UIElements; +using EngineUI = UnityEngine.Experimental.UIElements; + +using VRC.Udon.Graph.Interfaces; +using VRC.Udon.Graph; +using VRC.Udon.Serialization; +using UnityEditor; +using UnityEngine.Experimental.UIElements; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView +{ + public class UdonNode : Node, IEdgeConnectorListener + { + // name is inherited from parent VisualElement class + public Type type; + public GameObject gameObject; + private UdonGraph _graphView; + private EditorUI.PopupField _popup; + public UdonNodeDefinition definition; + public UdonNodeData data; + public Dictionary portsIn; + public Dictionary portsOut; + public List portsFlowIn; + public List portsFlowOut; + private INodeRegistry _registry; + public UdonGroup group; + + // Overload handling + private IList overloadDefinitions; + private readonly Dictionary _optionNameCache = new Dictionary(); + private readonly Dictionary _cleanerOptionNameCache = new Dictionary(); + + public UdonGraph Graph { get => _graphView; private set { } } + public INodeRegistry Registry { get => _registry; private set { } } + + private readonly string[] _specialFlows = + { + "Block", + "Branch", + "For", + "Foreach", + "While", + }; + + // Upgrade note - persistenceKey turns into viewDataKey in Unity 2019, this getter will make that transition easier + public string uid { get => persistenceKey; set => persistenceKey = value; } + + // Called when creating from Asset + public static UdonNode CreateNode(UdonNodeData nodeData, UdonGraph view) + { + UdonNodeDefinition definition = UdonEditorManager.Instance.GetNodeDefinition(nodeData.fullName); + if (definition == null) + { + Debug.LogError($"Cannot create node {nodeData.fullName} because there is no matching Node Definition"); + return null; + } + return CreateNode(definition, view, nodeData); + } + + // Called when creating from scratch + public static UdonNode CreateNode(UdonNodeDefinition definition, UdonGraph view, UdonNodeData nodeData = null) + { + return new UdonNode(definition, view, nodeData); + } + + // Constructor is private to force all paths through Static factory method + private UdonNode(UdonNodeDefinition nodeDefinition, UdonGraph view, UdonNodeData nodeData = null) + { + _graphView = view; + definition = nodeDefinition; + + var registry = UdonGraphExtensions.GetRegistryForDefinition(nodeDefinition); + if(registry != null) + { + this._registry = registry; + } + else + { + Debug.LogWarning($"Couldn't find registry for {nodeDefinition.fullName}"); + } + + VisualContainer titleContainer = new VisualContainer() + { + name = "title-container", + }; + this.Q("title").Insert(0, titleContainer); + + titleContainer.Add(this.Q("title-label")); + + var subtitle = new EngineUI.Label("") + { + name = "subtitle", + }; + bool skipSubtitle = ( + _specialFlows.Contains(nodeDefinition.fullName) + || nodeDefinition.fullName.EndsWith("et_Variable") + || nodeDefinition.fullName.StartsWithCached("Const_") + ); + + if (!skipSubtitle) + { + titleContainer.Insert(0, subtitle); + } + + // Set Title + var displayTitle = UdonGraphExtensions.PrettyString(nodeDefinition.name).FriendlyNameify(); + if (displayTitle == "Const_VRCUdonCommonInterfacesIUdonEventReceiver") + { + displayTitle = "UdonBehaviour"; + } + else if(displayTitle == "==" || displayTitle == "!=" || displayTitle == "+") + { + displayTitle = $"{nodeDefinition.type.Name} {displayTitle}"; + } + + if (displayTitle.StartsWith("Op ")) + displayTitle = displayTitle.Replace("Op ", ""); + + title = displayTitle; + + name = nodeDefinition.fullName; + elementTypeColor = UnityEngine.Random.ColorHSV(0.5f, 0.6f, 0.1f, 0.2f, 0.8f, 0.9f); + + string className = nodeDefinition.name.Split(' ').FirstOrDefault().Split('_').FirstOrDefault(); + AddToClassList(className); + // Null is a type here, so handle it special + if(nodeDefinition.type == null) + { + AddToClassList("null"); + } + else + { + AddToClassList(nodeDefinition.type.Namespace); + AddToClassList(nodeDefinition.type.Name); + } + AddToClassList(displayTitle.Replace(" ", "").ToLowerFirstChar()); + if (nodeDefinition.fullName.Contains('_')) + { + AddToClassList(nodeDefinition.fullName.Substring(0, nodeDefinition.fullName.IndexOf('_'))); + } + + if (!skipSubtitle) + { + if (nodeDefinition.fullName.StartsWith("Event_")) + { + subtitle.text = "Event"; + } + else + { + subtitle.text = className; + // temp title shenanigans + int firstSplit = nodeDefinition.fullName.IndexOf("__")+2; + if (firstSplit > 1) + { + int lastSplit = nodeDefinition.fullName.IndexOf("__", firstSplit); + int stringLength = (lastSplit > -1) ? lastSplit - firstSplit : nodeDefinition.fullName.Length - firstSplit; + string line2 = nodeDefinition.fullName.Substring(firstSplit, stringLength).Replace("_", " ").UppercaseFirst(); + if (line2.StartsWith("Op ")) + { + line2 = line2.Replace("Op ", ""); + subtitle.text = nodeDefinition.type.Name; + } + title = line2; + } + else + { + Debug.Log($"Couldn't find classname for {nodeDefinition.fullName}"); + } + } + } + + // Create or validate nodeData + if (nodeData == null) + { + data = _graphView.graphData.AddNode(nodeDefinition.fullName); + PopulateDefaultValues(); + ValidateNodeData(); + } + else + { + data = nodeData; + ValidateNodeData(); + SetPosition(new Rect(data.position.x, data.position.y, 0, 0)); + } + + uid = data.uid; + + // Fill in all fields, etc and add to the graph view + if (UdonGraphExtensions.ShouldShowDocumentationLink(definition)) + { + DrawHelpButton(); + } + + // Show overloads for nodes EXCEPT type, those have too many entries and break Unity UI + if (!nodeDefinition.fullName.StartsWith("Type_")) + { + RefreshPopup(); + } + LayoutPorts(nodeDefinition); + + view.MarkSceneDirty(); + } + + private void DrawHelpButton() + { + EngineUI.Button helpButton = new EngineUI.Button(ShowNodeDocs) + { + name = "help-button", + }; + helpButton.Add(new EngineUI.TextElement() + { + name = "icon", + text = "?" + }); + titleButtonContainer.Add(helpButton); + } + + private void ShowNodeDocs() + { + string url = UdonGraphExtensions.GetDocumentationLink(definition); + if (!string.IsNullOrEmpty(url)) + { + Help.BrowseURL(url); + } + } + + public override void SetPosition(Rect newPos) + { + newPos.position = GraphElementExtension.GetSnappedPosition(newPos.position); + base.SetPosition(newPos); + data.position = newPos.position; + } + + public override void UpdatePresenterPosition() + { + base.UpdatePresenterPosition(); + this.Reserialize(); + } + + private void RefreshPopup() + { + // Get overloads, draw them if we have more than one signature for this method + overloadDefinitions = CacheOverloads(); + if (overloadDefinitions != null && overloadDefinitions.Count > 1) + { + // Get index of currently selected (could cache this on node instead) + // TODO: switch to just reading this from Popup, which probably stores it + int currentIndex = 0; + for (int i = 0; i < overloadDefinitions.Count; i++) + { + if (overloadDefinitions.ElementAt(i).fullName != name) + { + continue; + } + + currentIndex = i; + break; + } + + // Build dropdown list + List options = new List(); + for (int i = 0; i < overloadDefinitions.Count; i++) + { + UdonNodeDefinition nodeDefinition = overloadDefinitions.ElementAt(i); + if (!_optionNameCache.TryGetValue(nodeDefinition, out string optionName)) + { + optionName = nodeDefinition.fullName; + // don't add overload types that take pointers, not supported + string[] splitOptionName = optionName.Split(new[] { "__" }, StringSplitOptions.None); + if (splitOptionName.Length >= 3) + { + optionName = $"({splitOptionName[2].Replace("_", ", ")})"; + } + optionName = optionName.FriendlyNameify(); + _optionNameCache.Add(nodeDefinition, optionName); + } + + if (!_cleanerOptionNameCache.TryGetValue(nodeDefinition, out string cleanerOptionName)) + { + cleanerOptionName = + optionName.Replace("UnityEngine", "").Replace("System", "").Replace("Variable_", ""); + _cleanerOptionNameCache.Add(nodeDefinition, cleanerOptionName); + } + + options.Add(cleanerOptionName); + // optionName is what was used as the tooltip. Do we need the tooltip? + } + + // Clear out old one + if (inputContainer.Contains(_popup)) + { + inputContainer.Remove(_popup); + } + + _popup = new EditorUI.PopupField(options, currentIndex); + _popup.OnValueChanged((e) => + { + // TODO - store data in the dropdown and use formatListItemCallback? + data.fullName = overloadDefinitions.ElementAt(_popup.index).fullName; + _graphView.Reload(); + }); + inputContainer.Add(_popup); + } + } + + private List CacheOverloads() + { + string baseIdentifier = name; + string[] splitBaseIdentifier = baseIdentifier.Split(new[] { "__" }, StringSplitOptions.None); + if (splitBaseIdentifier.Length >= 2) + { + baseIdentifier = $"{splitBaseIdentifier[0]}__{splitBaseIdentifier[1]}__"; + } + + if (baseIdentifier.StartsWithCached("Const_")) + { + return null; + } + + if (baseIdentifier.StartsWithCached("Type_")) + { + baseIdentifier = "Type_"; + } + + if (baseIdentifier.StartsWithCached("Variable_")) + { + baseIdentifier = "Variable_"; + } + + // This used to be cached on graph instead of calculated per-node + // TODO: cache this somewhere, maybe UdonEditorManager? Is that worth it for performance? + IEnumerable matchingNodeDefinitions = + UdonEditorManager.Instance.GetNodeDefinitions(baseIdentifier); + + var result = new List(); + foreach (var definition in matchingNodeDefinitions) + { + // don't add definitions with pointer parameters, not supported in Udon + if (!definition.fullName.Contains('*')) + { + result.Add(definition); + } + } + return result; + } + + internal void RestoreConnections() + { + RestoreInputs(); + RestoreFlows(); + } + + private void RestoreFlows() + { + for (int i = 0; i < data.flowUIDs.Length; i++) + { + // skip if flow uid is empty + string nodeUID = data.flowUIDs[i]; + if (string.IsNullOrEmpty(nodeUID)) + { + continue; + } + + // Find connected node via Graph + UdonNode connectedNode = _graphView.GetNodeByGuid(nodeUID) as UdonNode; + if (connectedNode == null) + { + Debug.Log($"Couldn't find node with GUID {nodeUID}"); + } + + // Trying to move a Block's flow that was left at the end to the beginning + if (portsFlowOut != null && i >= portsFlowOut.Count) + { + Debug.LogWarning($"Trying to restore flow to {connectedNode.name} from a non-existent port, skipping"); + + for (int j = 0; j < data.flowUIDs.Length; j++) + { + bool didRestoreFlow = false; + if (string.IsNullOrEmpty(data.flowUIDs[j])) + { + data.flowUIDs[j] = data.flowUIDs[i]; + data.flowUIDs[i] = ""; + didRestoreFlow = true; + } + if (didRestoreFlow) + { + RestoreFlows(); + } + } + + continue; + } + + UdonPort sourcePort = null; + // Edge case, but its possible that this is null in broken graphs + // Skip if we can't find the source port + if (portsFlowOut != null) + { + sourcePort = portsFlowOut.Count > 1 ? portsFlowOut[i] : portsFlowOut.FirstOrDefault(); + if (sourcePort == null) + { + Debug.LogError($"Failed to find output flow port for node {uid}"); + // clear the flow uid, user will have to reconnect by hand + data.flowUIDs[i] = ""; + continue; + } + } + else + { + Debug.LogError($"Failed to find output flow port for node {uid}"); + // clear the flow uid, user will have to reconnect by hand + data.flowUIDs[i] = ""; + continue; + } + + + UdonPort destPort = null; + // Edge case, but its possible that this is null in broken graphs + if(connectedNode.portsFlowIn != null) + { + destPort = connectedNode.portsFlowIn.FirstOrDefault(); + if (destPort == null) + { + Debug.LogError($"Failed to find input flow port node node {nodeUID}"); + // clear the flow uid, user will have to reconnect by hand + data.flowUIDs[i] = ""; + continue; + } + } + else + { + Debug.LogError($"Failed to find input flow port node node {nodeUID}"); + // clear the flow uid, user will have to reconnect by hand + data.flowUIDs[i] = ""; + continue; + } + + // Passed the tests! ready to connect + var edge = sourcePort.ConnectTo(destPort); + edge.AddToClassList("flow"); + _graphView.AddElement(edge); + } + } + + private void RestoreInputs() + { + for (int i = 0; i < definition.Inputs.Count; i++) + { + // Skip to next input if we don't have a node to check at this index + if (data.nodeUIDs.Length <= i) + { + continue; + } + + // Skip to next input if we have a bad node reference + if (string.IsNullOrEmpty(data.nodeUIDs[i])) + { + continue; + } + + // get otherIndex. not 100% sure what this refers to yet, maybe a port index? + string[] splitUID = data.nodeUIDs[i].Split('|'); + string nodeUID = splitUID[0]; + int otherIndex = 0; + if (splitUID.Length > 1) + { + otherIndex = int.Parse(splitUID[1]); + } + // Skip if we don't have a good uid for the other node + if (string.IsNullOrEmpty(nodeUID)) + { + continue; + } + + // Find connected node via Graph + UdonNode connectedNode = _graphView.GetNodeByGuid(nodeUID) as UdonNode; + if (connectedNode == null) + { + Debug.Log($"Couldn't find node with GUID {nodeUID}"); + } + + // No matching port for this data, skip + if (!portsIn.TryGetValue(i, out UdonPort destPort)) + { + Debug.LogError($"Failed to find input data slot (index {i}) for node {uid} {data.fullName}"); + continue; + } + + // Copied from Legacy, not sure what conditions would cause this + if (otherIndex < 0 || connectedNode.portsOut.Keys.Count <= otherIndex) + { + otherIndex = 0; + } + + // skip if we can't find the sourcePort - comment better once you understand what this is exactly + if (!connectedNode.portsOut.TryGetValue(otherIndex, out UdonPort sourcePort)) + { + Debug.LogError($"Failed to find output data slot for node {nodeUID}"); + continue; + } + + // Passed the tests! ready to connect + var edge = sourcePort.ConnectTo(destPort); + _graphView.AddElement(edge); + } + } + + // Legacy, haven't gone through yet + void ValidateNodeData() + { + bool modifiedData = false; + for (int i = 0; i < data.nodeValues.Length; i++) + { + if (definition.Inputs.Count <= i) + { + continue; + } + + Type expectedType = definition.Inputs[i].type; + + if (data.nodeValues[i] == null) + { + continue; + } + + object value = data.nodeValues[i].Deserialize(); + if (value == null) + { + continue; + } + + if (!expectedType.IsInstanceOfType(value)) + { + data.nodeValues[i] = SerializableObjectContainer.Serialize(null, expectedType); + modifiedData = true; + } + } + + if (modifiedData) + { + _graphView.ReSerializeData(); + } + } + + void PopulateDefaultValues() + { + // No default values so I'm just...making them? + int count = definition.Inputs.Count; + + data.nodeValues = new SerializableObjectContainer[count]; + data.nodeUIDs = new string[count]; + for (int i = 0; i < count; i++) + { + object value = definition.defaultValues.Count > i ? definition.defaultValues[i] : default; + data.nodeValues[i] = SerializableObjectContainer.Serialize(value, definition.Inputs[i].type); + } + } + + private enum VariableNodeType { Get, Set}; + + // renamed from MakePorts to match Legacy implementation for now + private void LayoutPorts(UdonNodeDefinition udonNodeDefinition) + { + SetupFlowPorts(udonNodeDefinition); + + // Don't setup in ports for Get_Variable node types, instead add variable popup + if (name.CompareTo("Get_Variable") == 0) + { + AddVariablePopup(VariableNodeType.Get); + } + else + { + // Add Variable popup and in-ports for Set_Variable + if (name.CompareTo("Set_Variable") == 0) + { + AddVariablePopup(VariableNodeType.Set); + } + + SetupInPorts(udonNodeDefinition); + } + + SetupOutPorts(udonNodeDefinition); + + RefreshExpandedState(); + RefreshPorts(); + } + + // TODO: Test this again after we have the new graph serializing the addition of nodes + private void AddVariablePopup(VariableNodeType varType) + { + // Legacy method of determining currently selected index + // TODO: upgrade this logic path from the legacy method of determining Variable indices + // Get Variable nodes only have one value, get it and deserialize + var value = data.nodeValues[0].Deserialize(); + + // Make copy of options so we can add the Create New Variable option + List options = new List(_graphView.GetVariableNames) + { + "Create New Variable" + }; + + // Get value of selected node in rather roundabout way + int currentIndex = _graphView.GetVariableNodes + .IndexOf(_graphView.GetVariableNodes.FirstOrDefault(v => v.uid == (string)value)); + + if (currentIndex < 0) + { + Debug.LogWarning($"Node {name} didn't have a variable assigned, removing"); + _graphView.graphData.RemoveNode(data); + _graphView.RemoveElement(this); + _graphView.Reload(); + return; + } + + // Create popup, set current value and set function to update data when it's changed. + var popup = new EditorUI.PopupField(options, currentIndex); + popup.OnValueChanged((e) => { + // Test whether we've selected an existing variable or the 'Create New Variable' option + if(popup.index < _graphView.GetVariableNames.Count) + { + // not currently using event value, which is variable name. Instead using legacy method of comparing index to graph variable nodes array index + string newUid = _graphView.GetVariableNodes[popup.index].uid; + // Get Variable nodes only have one entry, so index is 0 below + SetNewValue(newUid, 0); + // include 'Set' in title for Set Variable, just name for Get Variable + title = (varType == VariableNodeType.Set ? "Set " : "") + e.newValue; + _graphView.Reload(); + } + else + { + // User selected 'Create New Variable' + string newUid = _graphView.AddNewVariable(); + SetNewValue(newUid, 0, typeof(string)); + // TODO: see if we can remove the need for a second reload here + _graphView.Reload(); + } + }); + + string startingUid = _graphView.GetVariableNodes[currentIndex].uid; + SetNewValue(startingUid, 0); + + // include 'Set' in title for Set Variable, just name for Get Variable + title = (varType == VariableNodeType.Set ? "Set " : "") + _graphView.GetVariableNames[currentIndex]; + + // Add newly created popup to node + inputContainer.Add(popup); + } + + public void SetNewValue(object newValue, int index, Type inType = null) + { + data.nodeValues[index] = SerializableObjectContainer.Serialize(newValue, inType); + this.Reserialize(); + } + + private void SetupOutPorts(UdonNodeDefinition udonNodeDefinition) + { + portsOut = new Dictionary(); + for (int i = 0; i < udonNodeDefinition.Outputs.Count; i++) + { + var item = udonNodeDefinition.Outputs[i]; + + // Convert object type to variable type for Get_Variable nodes, or run them through the SlotTypeConverter for all other nodes + Type type = (udonNodeDefinition.fullName.Contains("Get_Variable")) ? + GetTypeForDefinition(udonNodeDefinition) : + UdonGraphExtensions.SlotTypeConverter(item.type, udonNodeDefinition.fullName); + + string label = UdonGraphExtensions.FriendlyTypeName(type).FriendlyNameify(); + if (label == "IUdonEventReceiver") + { + label = "UdonBehaviour"; + } + + if (item.name != null) label = $"{label} {item.name}"; + UdonPort port = (UdonPort) UdonPort.Create(label, Direction.Output, this, type, data, i); + outputContainer.Add(port); + portsOut[i] = port; + } + } + + private void SetupInPorts(UdonNodeDefinition udonNodeDefinition) + { + portsIn = new Dictionary(); + + // Expand node data to hold values for all inputs + data.Resize(udonNodeDefinition.Inputs.Count); + + int startIndex = 0; + // Skip first input for Set_Variable since that's the eventName which is set via dropdown + if (name.CompareTo("Set_Variable") == 0) + { + startIndex = 1; + } + + // Skip inputs for Null and This nodes + if (name.Contains("Const_Null") || name.Contains("Const_This")) + { + return; + } + + for (int index = startIndex; index < udonNodeDefinition.Inputs.Count; index++) + { + UdonNodeParameter input = udonNodeDefinition.Inputs[index]; + string label = ""; + // TODO: Ask Cubed what this does? Or figure it out. + if (udonNodeDefinition.Inputs.Count > index && index >= 0) + { + label = udonNodeDefinition.Inputs[index].name; + } + + if (label == "IUdonEventReceiver") + { + label = "UdonBehaviour"; + } + + + label = label.FriendlyNameify(); + string typeName = UdonGraphExtensions.FriendlyTypeName(input.type); + // skip over types with pointers. Should remove these from included overloads in the first place! + if (typeName.Contains('*')) + { + continue; + } + + // Convert object type to variable type for Set_Variable nodes, or run them through the SlotTypeConverter for all other nodes + Type type = (udonNodeDefinition.fullName.Contains("Set_Variable")) ? + type = GetTypeForDefinition(udonNodeDefinition) : + UdonGraphExtensions.SlotTypeConverter(input.type, udonNodeDefinition.fullName); + + // not 100% sure if I should use label or typeName here + UdonPort p = UdonPort.Create(label, Direction.Input, this, type, data, index) as UdonPort; + inputContainer.Add(p); + portsIn.Add(index, p); + } + + } + + private Type GetTypeForDefinition(UdonNodeDefinition udonNodeDefinition) + { + string targetUid = data.nodeValues[0].Deserialize().ToString(); + UdonNodeData varData = _graphView.GetVariableNodes.Where(n => n.uid == targetUid).FirstOrDefault(); + if (varData != null) + { + var targetDefinition = UdonEditorManager.Instance.GetNodeDefinition(varData.fullName); + if (targetDefinition != null) + { + return UdonGraphExtensions.SlotTypeConverter(targetDefinition.type, udonNodeDefinition.fullName); + } + } + // if we fail, return generic object type + return typeof(object); + } + + private void SetupFlowPorts(UdonNodeDefinition udonNodeDefinition) + { + if (udonNodeDefinition.flow) + { + portsFlowIn = new List(); + portsFlowOut = new List(); + + string label = ""; + + int inFlowIndex = -1; + int outFlowIndex = -1; + // don't add input flow for events, they're called from above + if (!udonNodeDefinition.fullName.StartsWith("Event_")) + { + label = udonNodeDefinition.inputFlowNames.Count > 0 ? udonNodeDefinition.inputFlowNames[0] : ""; + AddFlowPort(Direction.Input, label, ++inFlowIndex); + } + + // add output flow + label = udonNodeDefinition.outputFlowNames.Count > 0 ? udonNodeDefinition.outputFlowNames[0] : ""; + AddFlowPort(Direction.Output, label, ++outFlowIndex); + if (_specialFlows.Contains(udonNodeDefinition.fullName)) + { + label = udonNodeDefinition.outputFlowNames.Count > 1 ? udonNodeDefinition.outputFlowNames[1] : ""; + AddFlowPort(Direction.Output, label, ++outFlowIndex); + } + + // Add the number of output flows we need for a Block + if (udonNodeDefinition.fullName == "Block") + { + data.flowUIDs = data.flowUIDs.Where(f => !string.IsNullOrEmpty(f)).ToArray(); + int connectedFlows = data.flowUIDs.Length; + if (connectedFlows > 1) + { + for (int i = 0; i < connectedFlows - 1; i++) + { + AddFlowPort(Direction.Output, "", ++outFlowIndex); + } + } + } + } + } + + private void AddFlowPort(Direction d, string label, int index) + { + UdonPort p = (UdonPort) UdonPort.Create(label, d, this, null, data, index); + p.AddToClassList("flow"); + if(d == Direction.Input) + { + inputContainer.Add(p); + portsFlowIn.Add(p); + } + else + { + outputContainer.Add(p); + portsFlowOut.Add(p); + } + } + + private bool HasRecursiveFlow(Port fromSlot, Port toSlot) + { + // No need to check connections to value slots + if (toSlot.portType != null) return false; + + // Check out ports of node being connected TO + foreach (var port in (toSlot.node as UdonNode).portsFlowOut) + { + // if any of its ports connect to fromSlot, it's recursive. using foreach for convenience, should be just one edge + foreach (var edge in port.connections) + { + // if this connection goes to the node that started this all, then it's recursion + if(edge.input.node == fromSlot.node) + { + return true; + } + // Need to run this recursively to check all ports + if(HasRecursiveFlow(fromSlot, edge.input)) + { + return true; + } + } + } + return false; + } + + #region IEdgeConnectorListener + public void OnDrop(UnityEditor.Experimental.UIElements.GraphView.GraphView graphView, Edge edge) + { + if (edge.output != null && edge.input != null && !HasRecursiveFlow(edge.output, edge.input)) + { + edge.output.Connect(edge); + edge.input.Connect(edge); + graphView.AddElement(edge); + + // Reload block nodes after new connections + if(definition.fullName == "Block") + { + this.Reload(); + } + } + } + + public void OnDropOutsidePort(Edge edge, Vector2 position) + { + if (!Settings.SearchOnNoodleDrop) return; + + if (edge.output != null && edge.output.portType != null) + { + _graphView.OpenPortSearch(edge.output.portType, position, edge.output, Direction.Input); + } + else if (edge.input != null && edge.input.portType != null) + { + _graphView.OpenPortSearch(edge.input.portType, position, edge.input, Direction.Output); + } + } + + #endregion + } +} diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonNode.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonNode.cs.meta new file mode 100644 index 0000000..426e804 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dcd657bc1dcf357448d27bcfa8c5dc36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonPort.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonPort.cs new file mode 100644 index 0000000..c9a252e --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonPort.cs @@ -0,0 +1,431 @@ +using System; +using System.Linq; +using System.Runtime.CompilerServices; +using UnityEditor.Experimental.UIElements.GraphView; +using UnityEngine; +using UnityEngine.Experimental.UIElements; +using UnityEngine.UI; +using VRC.Udon.Graph; +using VRC.Udon.Serialization; +using EditorUI = UnityEditor.Experimental.UIElements; +using EngineUI = UnityEngine.Experimental.UIElements; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView +{ + [Serializable] + public class UdonPort : Port + { + public string FullName; + private UdonNodeData _udonNodeData; + private int _nodeValueIndex; + + private VisualElement _inputField; + private VisualElement _inputFieldTypeLabel; + + private IArrayProvider _inspector; + + private bool _waitToReserialize = false; + + protected UdonPort(Orientation portOrientation, Direction portDirection, Capacity portCapacity, Type type) : base(portOrientation, portDirection, portCapacity, type) + { + } + + public static Port Create(string portName, Direction portDirection, IEdgeConnectorListener connectorListener, Type type, UdonNodeData data, int index, Orientation orientation = Orientation.Horizontal) + { + Capacity capacity = Capacity.Single; + if(portDirection == Direction.Input && type == null || portDirection == Direction.Output && type != null) + { + capacity = Capacity.Multi; + } + var port = new UdonPort(orientation, portDirection, capacity, type) + { + m_EdgeConnector = new EdgeConnector(connectorListener), + }; + + port.portName = portName; + port._udonNodeData = data; + port._nodeValueIndex = index; + + port.SetupPort(); + return port; + } + + public int GetIndex() + { + return _nodeValueIndex; + } + + private void SetupPort() + { + this.AddManipulator(m_EdgeConnector); + + tooltip = UdonGraphExtensions.FriendlyTypeName(portType); + + if (portType == null || direction == Direction.Output) + { + return; + } + + var value = TryGetValueObject(out object result); + var field = UdonFieldFactory.CreateField( + portType, + result, + newValue => SetNewValue(newValue) + ); + + if(field != null) + { + SetupField(field); + } + + if (_udonNodeData.fullName.StartsWith("Const")) + { + RemoveConnector(); + } + + UpdateLabel(connected); + } + + // Made its own method for now as we have issues auto-converting between string and char in a TextField + // TODO: refactor SetupField so we can do just the field.value part separately to combine with this + private VisualElement SetupCharField() + { + TextField field = new TextField(); + field.AddToClassList("portField"); + if (TryGetValueObject(out object result)) + { + field.value = UdonGraphExtensions.UnescapeLikeALiteral((char)result); + } + + field.isDelayed = true; + + // Special handling for escaping char value + field.OnValueChanged((e) => + { + if(e.newValue[0] == '\\' && e.newValue.Length > 1) + { + SetNewValue(UdonGraphExtensions.EscapeLikeALiteral(e.newValue.Substring(0, 2))); + } + else + { + SetNewValue(e.newValue[0]); + } + }); + _inputField = field; + + // Add label, shown when input is connected. Not shown by default + var friendlyName = UdonGraphExtensions.FriendlyTypeName(typeof(char)).FriendlyNameify(); + var label = new EngineUI.Label(friendlyName); + _inputFieldTypeLabel = label; + + return _inputField; + } + + private void SetupField(VisualElement field) + { + // Delay color fields so they don't break UI + if(portType.IsAssignableFrom(typeof(EditorUI.ColorField))) + { + _waitToReserialize = true; + } + + // Custom Event fields need their event names sanitized after input and their connectors removed + if (_udonNodeData.fullName.CompareTo("Event_Custom") == 0) + { + var tfield = (TextField)field; + tfield.OnValueChanged((e) => + { + string newValue = e.newValue.SanitizeVariableName(); + tfield.value = newValue; + SetNewValue(newValue); + }); + RemoveConnector(); + } + + // Add label, shown when input is connected. Not shown by default + var friendlyName = UdonGraphExtensions.FriendlyTypeName(portType).FriendlyNameify(); + var label = new EngineUI.Label(friendlyName); + _inputFieldTypeLabel = label; + field.AddToClassList("portField"); + + _inputField = field; + Add(_inputField); + } + + private void RemoveConnector() + { + this.Q("connector")?.RemoveFromHierarchy(); + this.Q(null, "connectorText")?.RemoveFromHierarchy(); + } + +#pragma warning disable 0649 // variable never assigned + private EngineUI.Button _editArrayButton; + private void EditArray(Type elementType) + { + // Update Values when 'Save' is clicked + if(_inspector != null) + { + // Update Values + SetNewValue(_inspector.GetValues()); + + // Remove Inspector + _inspector.RemoveFromHierarchy(); + _inspector = null; + + // Update Button Text + _editArrayButton.text = "Edit"; + return; + } + + // Otherwise set up the inspector + _editArrayButton.text = "Save"; + + // Get value object, null is ok + TryGetValueObject(out object value); + + // Create it new + Type typedArrayInspector = (typeof(UdonArrayInspector<>)).MakeGenericType(elementType); + _inspector = (Activator.CreateInstance(typedArrayInspector, value) as IArrayProvider); + + parent.Add(_inspector as VisualElement); + } + + // Update elements on connect + public override void Connect(Edge edge) + { + base.Connect(edge); + + // The below logic is just for Output ports + if (edge.input.Equals(this)) return; + + // hide field, show label + var input = ((UdonPort)edge.input); + input.UpdateLabel(true); + + if (IsReloading()) + { + return; + } + + // update data + if (portType == null) + { + // We are a flow port + SetFlowUID(((UdonNode)input.node).uid); + } + else + { + // We are a value port, we need to send our info over to the OTHER node + string myNodeUid = ((UdonNode)node).uid; + input.SetDataFromNewConnection($"{myNodeUid}|{_nodeValueIndex}", input.GetIndex()); + } + + // in this case, we catch the method on the left node, with input as the right node + SendReserializeEvent(); + } + + public override void OnStopEdgeDragging() + { + base.OnStopEdgeDragging(); + + if (edgeConnector.edgeDragHelper.draggedPort == this) + { + if (capacity == Capacity.Single && connections.Count() > 0) + { + // This port could only have one connection. Fixed in Reserialize, need to reload to show the change + this.Reload(); + } + } + } + + private void SetFlowUID(string newValue) + { + if (_udonNodeData.flowUIDs.Length <= _nodeValueIndex) + { + // If we don't have space for this flow value, create a new array + // TODO: handle this elsewhere? + var newFlowArray = new string[_nodeValueIndex + 1]; + for (int i = 0; i < _udonNodeData.flowUIDs.Length; i++) + { + newFlowArray[i] = _udonNodeData.flowUIDs[i]; + } + _udonNodeData.flowUIDs = newFlowArray; + + _udonNodeData.flowUIDs.SetValue(newValue, _nodeValueIndex); + } + else + { + _udonNodeData.flowUIDs.SetValue(newValue, _nodeValueIndex); + } + } + + public bool IsReloading() + { + if(node is UdonNode) + { + return ((UdonNode)node).Graph.IsReloading; + } + else if(node is UdonStackNode) + { + return ((UdonStackNode)node).Graph.IsReloading; + } + else + { + return false; + } + } + + public void SetDataFromNewConnection(string uidAndPort, int index) + { + // can't do this for Reg stack nodes yet so skipping for demo + if (_udonNodeData == null) return; + + if (_udonNodeData.nodeUIDs.Length <= _nodeValueIndex) + { + Debug.Log("Couldn't set it"); + } + else + { + _udonNodeData.nodeUIDs.SetValue(uidAndPort, index); + } + } + + // Update elements on disconnect + public override void Disconnect(Edge edge) + { + base.Disconnect(edge); + + // hide label, show field + if(direction == Direction.Input) + { + UpdateLabel(false); + } + + if (IsReloading()) + { + return; + } + + // update data + if (direction == Direction.Output && portType == null) + { + // We are a flow port + SetFlowUID(""); + } + else if (direction == Direction.Input && portType != null) + { + // Direction is input + // We are a value port + SetDataFromNewConnection("", GetIndex()); + } + + // in this case, we catch the method on the left node, with input as the right node + SendReserializeEvent(); + } + + public void UpdateLabel(bool isConnected) + { + // Port has a 'connected' bool but it doesn't seem to update, so passing 'isConnected' for now + + if (isConnected) + { + if (_inputField != null && Contains(_inputField)) + { + _inputField.RemoveFromHierarchy(); + } + if (_inputFieldTypeLabel != null && !Contains(_inputFieldTypeLabel)) + { + Add(_inputFieldTypeLabel); + } + if(_editArrayButton != null && Contains(_editArrayButton)) + { + _editArrayButton.RemoveFromHierarchy(); + } + } + else + { + if (_inputField != null && !Contains(_inputField)) + { + Add(_inputField); + } + if (_inputFieldTypeLabel != null && Contains(_inputFieldTypeLabel)) + { + _inputFieldTypeLabel.RemoveFromHierarchy(); + } + if(_editArrayButton != null && !Contains(_editArrayButton)) + { + Add(_editArrayButton); + } + } + } + + private bool TryGetValueObject(out object result) + { + result = null; + SerializableObjectContainer container = null; + // For Get and Set variable nodes, reach into the actual value of the linked variable + if (_udonNodeData.fullName.Contains("et_Variable")) + { + string targetVariableUid = (string)_udonNodeData.nodeValues[0].Deserialize(); + if (targetVariableUid == null) return false; + + var data = _udonNodeData.GetGraph().FindNode(targetVariableUid); + if (data == null) return false; + + container = data.nodeValues[0]; + } + else + { + container = _udonNodeData.nodeValues[_nodeValueIndex]; + } + + if (container == null) + { + return false; + } + + result = container.Deserialize(); + if(result == null) + { + return false; + } + + return true; + } + + private void SetNewValue(object newValue) + { + var container = SerializableObjectContainer.Serialize(newValue, portType); + + if (_udonNodeData.fullName.Contains("Set_Variable")) + { + // Variables need to be traced back to their actual data points + string targetVariableUid = (string)_udonNodeData.nodeValues[0].Deserialize(); + if (targetVariableUid == null) return; + + var data = _udonNodeData.GetGraph().FindNode(targetVariableUid); + if (data == null) return; + + data.nodeValues[0] = container; + } + else + { + // regular value setting + _udonNodeData.nodeValues[_nodeValueIndex] = container; + } + + if (!_waitToReserialize) + { + SendReserializeEvent(); + } + } + + private void SendReserializeEvent() + { + if (!IsReloading()) + { + this.Reserialize(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonPort.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonPort.cs.meta new file mode 100644 index 0000000..e09d6a0 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonPort.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f83d1d3578dd28498c71a980bca86dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonStackNode.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonStackNode.cs new file mode 100644 index 0000000..f201d3e --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonStackNode.cs @@ -0,0 +1,195 @@ +using System; +using System.Collections.Generic; + +using UnityEngine; +using UnityEditor.Experimental.UIElements.GraphView; +using EditorUI = UnityEditor.Experimental.UIElements; + +using VRC.Udon.Graph.Interfaces; +using VRC.Udon.Graph; +using UnityEngine.Experimental.UIElements; +using UnityEditor; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView +{ + + public class UdonStackNode : StackNode, IEdgeConnectorListener, IUdonGraphElementDataProvider + { + private UdonGraph _graph; + private INodeRegistry _registry; + public UdonPort refPort; + private CustomData _customData = new CustomData(); + + public UdonGraph Graph { get => _graph; private set { } } + + // Upgrade note - persistenceKey turns into viewDataKey in Unity 2019, this getter will make that transition easier + public string uid { get => persistenceKey; set => persistenceKey = value; } + + // Called when restoring from asset + public static UdonStackNode Create(UdonGraphElementData elementData, UdonGraph graph) + { + return new UdonStackNode(elementData.jsonData, graph); + } + + // Called when creating from Search + public static UdonStackNode Create(INodeRegistry registry, Vector2 position, UdonGraph graph) + { + var stackNode = new UdonStackNode("", graph); + string registryName = registry.ToString(); + registryName = registryName.Substring(registryName.LastIndexOf('.') + 1); + stackNode._customData.registryName = registryName; + stackNode._customData.layout = new Rect(position, Vector2.zero); + return stackNode; + } + + private string GetSimpleNameForRegistry(INodeRegistry registry) + { + string registryName = registry.ToString().Replace("NodeRegistry", "").FriendlyNameify(); + registryName = registryName.Substring(registryName.LastIndexOf(".") + 1); + registryName = registryName.Replace("UnityEngine", ""); + return registryName; + } + + private UdonStackNode(string jsonData, UdonGraph graph) + { + _graph = graph; + + if (!string.IsNullOrEmpty(jsonData)) + { + EditorJsonUtility.FromJsonOverwrite(jsonData, _customData); + } + } + + private bool _initialized = false; + public override void OnPersistentDataReady() + { + if (_initialized) return; + + if(_customData != null) + { + // Exit early if we can't find the registry + if (!UdonEditorManager.Instance.TryGetRegistry(_customData.registryName, out _registry)) + { + Debug.LogError($"Couldn't make Stack Node from Registry {_customData.registryName}"); + return; + } + + _customData.title = GetSimpleNameForRegistry(_registry); + layer = _customData.layer; + if (string.IsNullOrEmpty(_customData.uid)) + { + _customData.uid = Guid.NewGuid().ToString(); + } + uid = _customData.uid; + name = _customData.title; + + headerContainer.Add(new Label() { text = _customData.title }); + + MakePorts(_registry); + SetPosition(_customData.layout); + UseDefaultStyling(); + + // add all contained elements from graph to self + var childUIDs = _customData.containedElements; + if (childUIDs != null) + { + foreach (var item in childUIDs) + { + var childNode = _graph.GetElementByGuid(item); + if (childNode != null) + { + AddElement(childNode); + // nodes can wind up behind the stacknode since they're added first + childNode.BringToFront(); + } + } + } + + } + + _initialized = true; + this.SaveNewData(); + } + + private void MakePorts(INodeRegistry registry) + { + Dictionary objectMethods = new Dictionary(); + + RefreshExpandedState(); + RefreshPorts(); + } + + public INodeRegistry GetRegistry() + { + return _registry; + } + + public void OnElementsAdded(IEnumerable elements) + { + foreach (var element in elements) + { + if (!_customData.containedElements.Contains(element.persistenceKey)) + { + _customData.containedElements.Add(element.persistenceKey); + Debug.Log($"StackNode {name} adding {element.name}"); + } + } + this.SaveNewData(); + } + + public void OnElementsRemoved(IEnumerable elements) + { + foreach (var element in elements) + { + if (_customData.containedElements.Contains(element.persistenceKey)) + { + Debug.Log($"StackNode {name} removing {element.name}"); + _customData.containedElements.Remove(element.persistenceKey); + } + } + this.SaveNewData(); + } + + protected override bool AcceptsElement(GraphElement element, ref int proposedIndex, int maxIndex) + { + return true; + } + + public override void UpdatePresenterPosition() + { + base.UpdatePresenterPosition(); + _customData.layout = GetPosition(); + this.SaveNewData(); + } + + #region IEdgeConnectorListener + + public void OnDropOutsidePort(Edge edge, Vector2 position) + { + Debug.Log($"OnDropOutside from {name}"); + } + + public void OnDrop(EditorUI.GraphView.GraphView graphView, Edge edge) + { + Debug.Log($"OnDrop from {name}"); + } + + #endregion + + public UdonGraphElementData GetData() + { + return new UdonGraphElementData(UdonGraphElementType.UdonStackNode, uid, EditorJsonUtility.ToJson(_customData)); + } + + public class CustomData + { + public string uid; + public Rect layout; + public List containedElements = new List(); + public string registryName; + public string title; + public int layer; + public Color elementTypeColor; + } + } +} \ No newline at end of file diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonStackNode.cs.meta b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonStackNode.cs.meta new file mode 100644 index 0000000..15b4f44 --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonStackNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c5cfbbfcd7bb5ad4487f1f9388a3a168 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonVariablesBlackboard.cs b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonVariablesBlackboard.cs new file mode 100644 index 0000000..e1dbdcc --- /dev/null +++ b/Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UI/GraphView/GraphElements/UdonVariablesBlackboard.cs @@ -0,0 +1,79 @@ +using System; +using UnityEditor.Experimental.UIElements.GraphView; +using UnityEngine; +using UnityEngine.Experimental.UIElements; + +namespace VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UI.GraphView +{ + public class UdonVariablesBlackboard : Blackboard, IUdonGraphElementDataProvider + { + private CustomData _customData = new CustomData(); + private UdonGraph _graph; + + public UdonVariablesBlackboard(UdonGraph graph) + { + _graph = graph; + title = "Variables"; + name = "Parameters"; + scrollable = true; + + // Remove subtitle + var subtitle = this.Query