From eb84bb298d2b95aec7b2ae12cbf25ac64f25379a Mon Sep 17 00:00:00 2001 From: tylermurphy534 Date: Sun, 6 Nov 2022 15:12:42 -0500 Subject: move to self host --- .../UdonGameObjectComponentReferenceFormatter.cs | 35 ++++++++++++++ ...onGameObjectComponentReferenceFormatter.cs.meta | 11 +++++ .../Formatters/UdonProgramFormatter.cs | 56 ++++++++++++++++++++++ .../Formatters/UdonProgramFormatter.cs.meta | 11 +++++ 4 files changed, 113 insertions(+) create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonGameObjectComponentReferenceFormatter.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonGameObjectComponentReferenceFormatter.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonProgramFormatter.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonProgramFormatter.cs.meta (limited to 'VRCSDK3Worlds/Assets/Udon/Serialization/Formatters') diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonGameObjectComponentReferenceFormatter.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonGameObjectComponentReferenceFormatter.cs new file mode 100644 index 00000000..677e3219 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonGameObjectComponentReferenceFormatter.cs @@ -0,0 +1,35 @@ +using System; +using VRC.Udon.Common; +using VRC.Udon.Serialization.OdinSerializer; +using VRC.Udon.Serialization.Formatters; + +[assembly: RegisterFormatter(typeof(UdonGameObjectComponentReferenceFormatter))] + +namespace VRC.Udon.Serialization.Formatters +{ + public sealed class UdonGameObjectComponentReferenceFormatter : BaseFormatter + { + private static readonly Serializer _typeSerializer = Serializer.Get(); + + protected override UdonGameObjectComponentHeapReference GetUninitializedObject() + { + return null; + } + + // ReSharper disable once RedundantAssignment + protected override void DeserializeImplementation(ref UdonGameObjectComponentHeapReference value, IDataReader reader) + { + Type type = _typeSerializer.ReadValue(reader); + + value = new UdonGameObjectComponentHeapReference(type); + + RegisterReferenceID(value, reader); + InvokeOnDeserializingCallbacks(ref value, reader.Context); + } + + protected override void SerializeImplementation(ref UdonGameObjectComponentHeapReference value, IDataWriter writer) + { + _typeSerializer.WriteValue(value.type, writer); + } + } +} diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonGameObjectComponentReferenceFormatter.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonGameObjectComponentReferenceFormatter.cs.meta new file mode 100644 index 00000000..7af055f9 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonGameObjectComponentReferenceFormatter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b1d0b8aa8084bcd44a572d524d7a31bb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonProgramFormatter.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonProgramFormatter.cs new file mode 100644 index 00000000..7db14523 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonProgramFormatter.cs @@ -0,0 +1,56 @@ +using VRC.Udon.Common; +using VRC.Udon.Common.Interfaces; +using VRC.Udon.Serialization.OdinSerializer; +using VRC.Udon.Serialization.Formatters; + +[assembly: RegisterFormatter(typeof(UdonProgramFormatter))] + +namespace VRC.Udon.Serialization.Formatters +{ + public sealed class UdonProgramFormatter : BaseFormatter + { + private static readonly Serializer _byteArrayReaderWriter = Serializer.Get(); + private static readonly Serializer _udonHeapReaderWriter = Serializer.Get(); + private static readonly Serializer _udonSymbolTableReaderWriter = Serializer.Get(); + private static readonly Serializer _udonSyncMetadataTableReaderWriter = Serializer.Get(); + + protected override UdonProgram GetUninitializedObject() + { + return null; + } + + // ReSharper disable once RedundantAssignment + protected override void DeserializeImplementation(ref UdonProgram value, IDataReader reader) + { + reader.ReadString(out string instructionSetIdentifier); + reader.ReadInt32(out int instructionSetVersion); + byte[] byteCode = _byteArrayReaderWriter.ReadValue(reader); + IUdonHeap heap = _udonHeapReaderWriter.ReadValue(reader); + IUdonSymbolTable entryPoints = _udonSymbolTableReaderWriter.ReadValue(reader); + IUdonSymbolTable symbolTable = _udonSymbolTableReaderWriter.ReadValue(reader); + IUdonSyncMetadataTable syncMetadataTable = _udonSyncMetadataTableReaderWriter.ReadValue(reader); + + if(!reader.ReadInt32(out int updateOrder)) + { + updateOrder = 0; + } + + value = new UdonProgram(instructionSetIdentifier, instructionSetVersion, byteCode, heap, entryPoints, symbolTable, syncMetadataTable, updateOrder); + + RegisterReferenceID(value, reader); + InvokeOnDeserializingCallbacks(ref value, reader.Context); + } + + protected override void SerializeImplementation(ref UdonProgram value, IDataWriter writer) + { + writer.WriteString("InstructionSetIdentifier", value.InstructionSetIdentifier); + writer.WriteInt32("InstructionSetVersion", value.InstructionSetVersion); + _byteArrayReaderWriter.WriteValue("ByteCode", value.ByteCode, writer); + _udonHeapReaderWriter.WriteValue("Heap", value.Heap, writer); + _udonSymbolTableReaderWriter.WriteValue("EntryPoints", value.EntryPoints, writer); + _udonSymbolTableReaderWriter.WriteValue("SymbolTable", value.SymbolTable, writer); + _udonSyncMetadataTableReaderWriter.WriteValue("SyncMetadataTable", value.SyncMetadataTable, writer); + writer.WriteInt32("UpdateOrder", value.UpdateOrder); + } + } +} diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonProgramFormatter.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonProgramFormatter.cs.meta new file mode 100644 index 00000000..565153dd --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/Formatters/UdonProgramFormatter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f2626352b2a60eb41adc3580ae44c750 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- cgit v1.2.3-freya