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 --- .../IOverridesSerializationFormat.cs | 30 ++++ .../IOverridesSerializationFormat.cs.meta | 11 ++ .../IOverridesSerializationPolicy.cs | 31 ++++ .../IOverridesSerializationPolicy.cs.meta | 11 ++ .../ISupportsPrefabSerialization.cs | 30 ++++ .../ISupportsPrefabSerialization.cs.meta | 11 ++ .../SerializedUnityObjects/SerializationData.cs | 175 +++++++++++++++++++++ .../SerializationData.cs.meta | 11 ++ .../SerializedUnityObjects/SerializedBehaviour.cs | 62 ++++++++ .../SerializedBehaviour.cs.meta | 11 ++ .../SerializedUnityObjects/SerializedComponent.cs | 62 ++++++++ .../SerializedComponent.cs.meta | 11 ++ .../SerializedMonoBehaviour.cs | 63 ++++++++ .../SerializedMonoBehaviour.cs.meta | 11 ++ .../SerializedScriptableObject.cs | 60 +++++++ .../SerializedScriptableObject.cs.meta | 11 ++ .../SerializedStateMachineBehaviour.cs | 60 +++++++ .../SerializedStateMachineBehaviour.cs.meta | 11 ++ .../SerializedUnityObject.cs | 60 +++++++ .../SerializedUnityObject.cs.meta | 11 ++ 20 files changed, 743 insertions(+) create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationFormat.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationFormat.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationPolicy.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationPolicy.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/ISupportsPrefabSerialization.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/ISupportsPrefabSerialization.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializationData.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializationData.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedBehaviour.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedBehaviour.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedComponent.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedComponent.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedMonoBehaviour.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedMonoBehaviour.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedScriptableObject.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedScriptableObject.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedStateMachineBehaviour.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedStateMachineBehaviour.cs.meta create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedUnityObject.cs create mode 100644 VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedUnityObject.cs.meta (limited to 'VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects') diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationFormat.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationFormat.cs new file mode 100644 index 00000000..4771de1b --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationFormat.cs @@ -0,0 +1,30 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file 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. +// +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + /// + /// Indicates that an Odin-serialized Unity object controls its own serialization format. Every time it is serialized, it will be asked which format to use. + /// + public interface IOverridesSerializationFormat + { + /// + /// Gets the format to use for serialization. + /// + DataFormat GetFormatToSerializeAs(bool isPlayer); + } +} \ No newline at end of file diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationFormat.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationFormat.cs.meta new file mode 100644 index 00000000..9ec81ef0 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationFormat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff1ca109149d83b03b39644f8045275e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationPolicy.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationPolicy.cs new file mode 100644 index 00000000..6f46532f --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationPolicy.cs @@ -0,0 +1,31 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file 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. +// +//----------------------------------------------------------------------- + +namespace VRC.Udon.Serialization.OdinSerializer +{ + /// + /// Indicates that an Odin-serialized Unity object provides its own serialization policy rather than using the default policy. + /// + /// Note that THE VALUES RETURNED BY THIS INTERFACE WILL OVERRIDE THE PARAMETERS PASSED TO and . + /// + public interface IOverridesSerializationPolicy + { + ISerializationPolicy SerializationPolicy { get; } + bool OdinSerializesUnityFields { get; } + } +} \ No newline at end of file diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationPolicy.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationPolicy.cs.meta new file mode 100644 index 00000000..57a0c8a0 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/IOverridesSerializationPolicy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8942002e9ac41c2bfd27c4fbedf93f09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/ISupportsPrefabSerialization.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/ISupportsPrefabSerialization.cs new file mode 100644 index 00000000..507eaa70 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/ISupportsPrefabSerialization.cs @@ -0,0 +1,30 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file 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. +// +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + /// + /// Indicates that an Odin-serialized Unity object supports prefab serialization. + /// + public interface ISupportsPrefabSerialization + { + /// + /// Gets or sets the serialization data of the object. + /// + SerializationData SerializationData { get; set; } + } +} \ No newline at end of file diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/ISupportsPrefabSerialization.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/ISupportsPrefabSerialization.cs.meta new file mode 100644 index 00000000..1023fe57 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/ISupportsPrefabSerialization.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7279ec8ad7837f13ec833193ab4282cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializationData.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializationData.cs new file mode 100644 index 00000000..8b441751 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializationData.cs @@ -0,0 +1,175 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file 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. +// +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using System; + using System.Collections.Generic; + using UnityEngine; + using Utilities; + + /// + /// Unity serialized data struct that contains all data needed by Odin serialization. + /// + [Serializable] + public struct SerializationData + { + /// + /// The name of the field. + /// + public const string PrefabModificationsReferencedUnityObjectsFieldName = "PrefabModificationsReferencedUnityObjects"; + + /// + /// The name of the field. + /// + public const string PrefabModificationsFieldName = "PrefabModifications"; + + /// + /// The name of the field. + /// + public const string PrefabFieldName = "Prefab"; + + /// + /// The data format used by the serializer. This field will be automatically set to the format specified in the global serialization config + /// when the Unity object gets serialized, unless the Unity object implements the interface. + /// + [SerializeField] + public DataFormat SerializedFormat; + + /// + /// The serialized data when serializing with the Binray format. + /// + [SerializeField] + public byte[] SerializedBytes; + + /// + /// All serialized Unity references. + /// + [SerializeField] + public List ReferencedUnityObjects; + + /// + /// Whether the object contains any serialized data. + /// + [Obsolete("Use ContainsData instead")] + public bool HasEditorData + { + get + { + switch (this.SerializedFormat) + { + case DataFormat.Binary: + case DataFormat.JSON: + return !(this.SerializedBytesString.IsNullOrWhitespace() && (this.SerializedBytes == null || this.SerializedBytes.Length == 0)); + + case DataFormat.Nodes: + return !(this.SerializationNodes == null || this.SerializationNodes.Count == 0); + + default: + throw new NotImplementedException(this.SerializedFormat.ToString()); + } + } + } + + /// + /// Gets a value indicating whether the struct contains any data. + /// If this is false, then it could mean that Unity has not yet deserialized the struct. + /// + public bool ContainsData + { + get + { + return + // this.SerializedBytesString != null && // Unity serialized strings remains null when an object is created until it's deserialized. + this.SerializedBytes != null && + this.SerializationNodes != null && + this.PrefabModifications != null && + this.ReferencedUnityObjects != null; + } + } + + /// + /// The serialized data when serializing with the JSON format. + /// + [SerializeField] + public string SerializedBytesString; + + /// + /// The reference to the prefab this is only populated in prefab scene instances. + /// + [SerializeField] + public UnityEngine.Object Prefab; + + /// + /// All serialized Unity references. + /// + [SerializeField] + public List PrefabModificationsReferencedUnityObjects; + + /// + /// All Odin serialized prefab modifications. + /// + [SerializeField] + public List PrefabModifications; + + /// + /// The serialized data when serializing with the Nodes format. + /// + [SerializeField] + public List SerializationNodes; + + /// + /// Resets all data. + /// + public void Reset() + { + this.SerializedFormat = DataFormat.Binary; + + if (this.SerializedBytes != null && this.SerializedBytes.Length > 0) + { + this.SerializedBytes = new byte[0]; + } + + if (this.ReferencedUnityObjects != null && this.ReferencedUnityObjects.Count > 0) + { + this.ReferencedUnityObjects.Clear(); + } + + this.Prefab = null; + + if (this.SerializationNodes != null && this.SerializationNodes.Count > 0) + { + this.SerializationNodes.Clear(); + } + + if (this.SerializedBytesString != null && this.SerializedBytesString.Length > 0) + { + this.SerializedBytesString = string.Empty; + } + + if (this.PrefabModificationsReferencedUnityObjects != null && this.PrefabModificationsReferencedUnityObjects.Count > 0) + { + this.PrefabModificationsReferencedUnityObjects.Clear(); + } + + if (this.PrefabModifications != null && this.PrefabModifications.Count > 0) + { + this.PrefabModifications.Clear(); + } + } + } +} \ No newline at end of file diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializationData.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializationData.cs.meta new file mode 100644 index 00000000..95b776f7 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializationData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ea095023abd05a7af0da4166dcefdee8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedBehaviour.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedBehaviour.cs new file mode 100644 index 00000000..f31b8b4d --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedBehaviour.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file 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. +// +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// + /// A Unity Behaviour which is serialized by the Sirenix serialization system. + /// +#if ODIN_INSPECTOR + [Sirenix.OdinInspector.ShowOdinSerializedPropertiesInInspector] +#endif + + public abstract class SerializedBehaviour : Behaviour, ISerializationCallbackReceiver, ISupportsPrefabSerialization + { + [SerializeField, HideInInspector] + private SerializationData serializationData; + + SerializationData ISupportsPrefabSerialization.SerializationData { get { return this.serializationData; } set { this.serializationData = value; } } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + UnitySerializationUtility.DeserializeUnityObject(this, ref this.serializationData); + this.OnAfterDeserialize(); + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + this.OnBeforeSerialize(); + UnitySerializationUtility.SerializeUnityObject(this, ref this.serializationData); + } + + /// + /// Invoked after deserialization has taken place. + /// + protected virtual void OnAfterDeserialize() + { + } + + /// + /// Invoked before serialization has taken place. + /// + protected virtual void OnBeforeSerialize() + { + } + } +} \ No newline at end of file diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedBehaviour.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedBehaviour.cs.meta new file mode 100644 index 00000000..605a78ee --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3cecb461cebbc940ede3b5ddb72382e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedComponent.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedComponent.cs new file mode 100644 index 00000000..47ba4f3b --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedComponent.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file 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. +// +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// + /// A Unity Component which is serialized by the Sirenix serialization system. + /// +#if ODIN_INSPECTOR + [Sirenix.OdinInspector.ShowOdinSerializedPropertiesInInspector] +#endif + + public abstract class SerializedComponent : Component, ISerializationCallbackReceiver, ISupportsPrefabSerialization + { + [SerializeField, HideInInspector] + private SerializationData serializationData; + + SerializationData ISupportsPrefabSerialization.SerializationData { get { return this.serializationData; } set { this.serializationData = value; } } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + UnitySerializationUtility.DeserializeUnityObject(this, ref this.serializationData); + this.OnAfterDeserialize(); + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + this.OnBeforeSerialize(); + UnitySerializationUtility.SerializeUnityObject(this, ref this.serializationData); + } + + /// + /// Invoked after deserialization has taken place. + /// + protected virtual void OnAfterDeserialize() + { + } + + /// + /// Invoked before serialization has taken place. + /// + protected virtual void OnBeforeSerialize() + { + } + } +} \ No newline at end of file diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedComponent.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedComponent.cs.meta new file mode 100644 index 00000000..903c320b --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedComponent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 56b88cfe9935184fe250bda018144f26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedMonoBehaviour.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedMonoBehaviour.cs new file mode 100644 index 00000000..8d5ea413 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedMonoBehaviour.cs @@ -0,0 +1,63 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file 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. +// +//----------------------------------------------------------------------- + +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// + /// A Unity MonoBehaviour which is serialized by the Sirenix serialization system. + /// +#if ODIN_INSPECTOR + [Sirenix.OdinInspector.ShowOdinSerializedPropertiesInInspector] +#endif + + public abstract class SerializedMonoBehaviour : MonoBehaviour, ISerializationCallbackReceiver, ISupportsPrefabSerialization + { + [SerializeField, HideInInspector] + private SerializationData serializationData; + + SerializationData ISupportsPrefabSerialization.SerializationData { get { return this.serializationData; } set { this.serializationData = value; } } + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + UnitySerializationUtility.DeserializeUnityObject(this, ref this.serializationData); + this.OnAfterDeserialize(); + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + this.OnBeforeSerialize(); + UnitySerializationUtility.SerializeUnityObject(this, ref this.serializationData); + } + + /// + /// Invoked after deserialization has taken place. + /// + protected virtual void OnAfterDeserialize() + { + } + + /// + /// Invoked before serialization has taken place. + /// + protected virtual void OnBeforeSerialize() + { + } + } +} \ No newline at end of file diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedMonoBehaviour.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedMonoBehaviour.cs.meta new file mode 100644 index 00000000..8a926e47 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedMonoBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1b9fa6342beb9fdfc2c4bc1d8e5e971 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedScriptableObject.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedScriptableObject.cs new file mode 100644 index 00000000..f0af64ee --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedScriptableObject.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file 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. +// +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// + /// A Unity ScriptableObject which is serialized by the Sirenix serialization system. + /// +#if ODIN_INSPECTOR + [Sirenix.OdinInspector.ShowOdinSerializedPropertiesInInspector] +#endif + + public abstract class SerializedScriptableObject : ScriptableObject, ISerializationCallbackReceiver + { + [SerializeField, HideInInspector] + private SerializationData serializationData; + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + UnitySerializationUtility.DeserializeUnityObject(this, ref this.serializationData); + this.OnAfterDeserialize(); + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + this.OnBeforeSerialize(); + UnitySerializationUtility.SerializeUnityObject(this, ref this.serializationData); + } + + /// + /// Invoked after deserialization has taken place. + /// + protected virtual void OnAfterDeserialize() + { + } + + /// + /// Invoked before serialization has taken place. + /// + protected virtual void OnBeforeSerialize() + { + } + } +} \ No newline at end of file diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedScriptableObject.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedScriptableObject.cs.meta new file mode 100644 index 00000000..72be5810 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedScriptableObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6cb9325ffffee5d6ed94d71590b4049a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedStateMachineBehaviour.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedStateMachineBehaviour.cs new file mode 100644 index 00000000..85a01e97 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedStateMachineBehaviour.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file 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. +// +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// + /// A Unity StateMachineBehaviour which is serialized by the Sirenix serialization system. + /// +#if ODIN_INSPECTOR + [Sirenix.OdinInspector.ShowOdinSerializedPropertiesInInspector] +#endif + + public abstract class SerializedStateMachineBehaviour : StateMachineBehaviour, ISerializationCallbackReceiver + { + [SerializeField, HideInInspector] + private SerializationData serializationData; + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + UnitySerializationUtility.DeserializeUnityObject(this, ref this.serializationData); + this.OnAfterDeserialize(); + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + this.OnBeforeSerialize(); + UnitySerializationUtility.SerializeUnityObject(this, ref this.serializationData); + } + + /// + /// Invoked after deserialization has taken place. + /// + protected virtual void OnAfterDeserialize() + { + } + + /// + /// Invoked before serialization has taken place. + /// + protected virtual void OnBeforeSerialize() + { + } + } +} \ No newline at end of file diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedStateMachineBehaviour.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedStateMachineBehaviour.cs.meta new file mode 100644 index 00000000..442e5312 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedStateMachineBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eefcd68a84ee7903b08c6254c17fafe3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedUnityObject.cs b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedUnityObject.cs new file mode 100644 index 00000000..86a75a75 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedUnityObject.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +// +// Copyright (c) 2018 Sirenix IVS +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file 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. +// +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// + /// A Unity ScriptableObject which is serialized by the Sirenix serialization system. + /// +#if ODIN_INSPECTOR + [Sirenix.OdinInspector.ShowOdinSerializedPropertiesInInspector] +#endif + + public abstract class SerializedUnityObject : UnityEngine.Object, ISerializationCallbackReceiver + { + [SerializeField, HideInInspector] + private SerializationData serializationData; + + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + UnitySerializationUtility.DeserializeUnityObject(this, ref this.serializationData); + this.OnAfterDeserialize(); + } + + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + this.OnBeforeSerialize(); + UnitySerializationUtility.SerializeUnityObject(this, ref this.serializationData); + } + + /// + /// Invoked after deserialization has taken place. + /// + protected virtual void OnAfterDeserialize() + { + } + + /// + /// Invoked before serialization has taken place. + /// + protected virtual void OnBeforeSerialize() + { + } + } +} \ No newline at end of file diff --git a/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedUnityObject.cs.meta b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedUnityObject.cs.meta new file mode 100644 index 00000000..738d24b4 --- /dev/null +++ b/VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects/SerializedUnityObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d62f7ab4e5aa075b819d6c71e929686b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- cgit v1.2.3-freya