summaryrefslogtreecommitdiff
path: root/VRCSDK3Worlds/Assets/Udon/ProgramSources
diff options
context:
space:
mode:
authortylermurphy534 <tylermurphy534@gmail.com>2022-11-06 15:12:42 -0500
committertylermurphy534 <tylermurphy534@gmail.com>2022-11-06 15:12:42 -0500
commiteb84bb298d2b95aec7b2ae12cbf25ac64f25379a (patch)
treeefd616a157df06ab661c6d56651853431ac6b08b /VRCSDK3Worlds/Assets/Udon/ProgramSources
downloadunityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.gz
unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.bz2
unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.zip
move to self host
Diffstat (limited to 'VRCSDK3Worlds/Assets/Udon/ProgramSources')
-rw-r--r--VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract.meta8
-rw-r--r--VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractSerializedUdonProgramAsset.cs17
-rw-r--r--VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractSerializedUdonProgramAsset.cs.meta11
-rw-r--r--VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractUdonProgramSource.cs20
-rw-r--r--VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractUdonProgramSource.cs.meta11
-rw-r--r--VRCSDK3Worlds/Assets/Udon/ProgramSources/SerializedUdonProgramAsset.cs46
-rw-r--r--VRCSDK3Worlds/Assets/Udon/ProgramSources/SerializedUdonProgramAsset.cs.meta11
7 files changed, 124 insertions, 0 deletions
diff --git a/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract.meta b/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract.meta
new file mode 100644
index 00000000..fdf30f45
--- /dev/null
+++ b/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6f527b4785069e24e92365548c4e3dc1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractSerializedUdonProgramAsset.cs b/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractSerializedUdonProgramAsset.cs
new file mode 100644
index 00000000..21811758
--- /dev/null
+++ b/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractSerializedUdonProgramAsset.cs
@@ -0,0 +1,17 @@
+using System.Collections;
+using System.Collections.Generic;
+using JetBrains.Annotations;
+using UnityEngine;
+using VRC.Udon.Common.Interfaces;
+
+namespace VRC.Udon
+{
+ public abstract class AbstractSerializedUdonProgramAsset : ScriptableObject
+ {
+ [PublicAPI]
+ public abstract void StoreProgram(IUdonProgram udonProgram);
+
+ [PublicAPI]
+ public abstract IUdonProgram RetrieveProgram();
+ }
+}
diff --git a/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractSerializedUdonProgramAsset.cs.meta b/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractSerializedUdonProgramAsset.cs.meta
new file mode 100644
index 00000000..8fbfd26a
--- /dev/null
+++ b/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractSerializedUdonProgramAsset.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2fad63ba312d5f44a8ab215c3f5b18f1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractUdonProgramSource.cs b/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractUdonProgramSource.cs
new file mode 100644
index 00000000..359dba0a
--- /dev/null
+++ b/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractUdonProgramSource.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using JetBrains.Annotations;
+using UnityEngine;
+using VRC.Udon.Common.Interfaces;
+
+namespace VRC.Udon
+{
+ public abstract class AbstractUdonProgramSource : ScriptableObject
+ {
+ [PublicAPI]
+ public abstract AbstractSerializedUdonProgramAsset SerializedProgramAsset { get; }
+
+ [PublicAPI]
+ public abstract void RunEditorUpdate(UdonBehaviour udonBehaviour, ref bool dirty);
+
+ [PublicAPI]
+ public abstract void RefreshProgram();
+ }
+}
diff --git a/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractUdonProgramSource.cs.meta b/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractUdonProgramSource.cs.meta
new file mode 100644
index 00000000..54a1d0e9
--- /dev/null
+++ b/VRCSDK3Worlds/Assets/Udon/ProgramSources/Abstract/AbstractUdonProgramSource.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7fa64b2d7df72fb4cbf7898a400e86ef
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/VRCSDK3Worlds/Assets/Udon/ProgramSources/SerializedUdonProgramAsset.cs b/VRCSDK3Worlds/Assets/Udon/ProgramSources/SerializedUdonProgramAsset.cs
new file mode 100644
index 00000000..d1bdcb5b
--- /dev/null
+++ b/VRCSDK3Worlds/Assets/Udon/ProgramSources/SerializedUdonProgramAsset.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Profiling;
+using VRC.Udon.Common;
+using VRC.Udon.Common.Interfaces;
+using VRC.Udon.Serialization.OdinSerializer;
+
+namespace VRC.Udon.ProgramSources
+{
+ public sealed class SerializedUdonProgramAsset : AbstractSerializedUdonProgramAsset
+ {
+ private const DataFormat DEFAULT_SERIALIZATION_DATA_FORMAT = DataFormat.Binary;
+
+ [SerializeField, HideInInspector]
+ private string serializedProgramBytesString;
+
+ [SerializeField, HideInInspector]
+ private List<UnityEngine.Object> programUnityEngineObjects;
+
+ // Store the serialization DataFormat that was actually used to serialize the program.
+ // This allows us to change the DataFormat later (ex. switch to binary) without causing already serialized programs to use the wrong DataFormat.
+ // Programs will be deserialized using the previous format and will switch to the new format if StoreProgram is called again later.
+ [SerializeField, HideInInspector]
+ private DataFormat serializationDataFormat = DEFAULT_SERIALIZATION_DATA_FORMAT;
+
+ public override void StoreProgram(IUdonProgram udonProgram)
+ {
+ if (this == null) return;
+
+ byte[] serializedProgramBytes = SerializationUtility.SerializeValue(udonProgram, DEFAULT_SERIALIZATION_DATA_FORMAT, out programUnityEngineObjects);
+ serializedProgramBytesString = Convert.ToBase64String(serializedProgramBytes);
+ serializationDataFormat = DEFAULT_SERIALIZATION_DATA_FORMAT;
+
+ #if UNITY_EDITOR
+ UnityEditor.EditorUtility.SetDirty(this);
+ #endif
+ }
+
+ public override IUdonProgram RetrieveProgram()
+ {
+ byte[] serializedProgramBytes = Convert.FromBase64String(serializedProgramBytesString ?? "");
+ return SerializationUtility.DeserializeValue<IUdonProgram>(serializedProgramBytes, serializationDataFormat, programUnityEngineObjects);
+ }
+ }
+}
diff --git a/VRCSDK3Worlds/Assets/Udon/ProgramSources/SerializedUdonProgramAsset.cs.meta b/VRCSDK3Worlds/Assets/Udon/ProgramSources/SerializedUdonProgramAsset.cs.meta
new file mode 100644
index 00000000..d401c8ae
--- /dev/null
+++ b/VRCSDK3Worlds/Assets/Udon/ProgramSources/SerializedUdonProgramAsset.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bf61d954ecb803046953c666facfb904
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: