diff options
| author | tylermurphy534 <tylermurphy534@gmail.com> | 2022-11-06 15:12:42 -0500 |
|---|---|---|
| committer | tylermurphy534 <tylermurphy534@gmail.com> | 2022-11-06 15:12:42 -0500 |
| commit | eb84bb298d2b95aec7b2ae12cbf25ac64f25379a (patch) | |
| tree | efd616a157df06ab661c6d56651853431ac6b08b /VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects | |
| download | unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.gz unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.bz2 unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.zip | |
move to self host
Diffstat (limited to 'VRCSDK3Worlds/Assets/Udon/Serialization/OdinSerializer/Unity Integration/SerializedUnityObjects')
20 files changed, 743 insertions, 0 deletions
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 file="IOverridesSerializationFormat.cs" company="Sirenix IVS"> +// 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. +// </copyright> +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + /// <summary> + /// 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. + /// </summary> + public interface IOverridesSerializationFormat + { + /// <summary> + /// Gets the format to use for serialization. + /// </summary> + 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 file="IOverridesSerializationPolicy.cs" company="Sirenix IVS"> +// 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. +// </copyright> +//----------------------------------------------------------------------- + +namespace VRC.Udon.Serialization.OdinSerializer +{ + /// <summary> + /// Indicates that an Odin-serialized Unity object provides its own serialization policy rather than using the default policy. + /// <para/> + /// Note that THE VALUES RETURNED BY THIS INTERFACE WILL OVERRIDE THE PARAMETERS PASSED TO <see cref="UnitySerializationUtility.SerializeUnityObject(UnityEngine.Object, ref SerializationData, bool, SerializationContext)"/> and <see cref="UnitySerializationUtility.DeserializeUnityObject(UnityEngine.Object, ref SerializationData, DeserializationContext)"/>. + /// </summary> + 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 file="ISupportsPrefabSerialization.cs" company="Sirenix IVS"> +// 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. +// </copyright> +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + /// <summary> + /// Indicates that an Odin-serialized Unity object supports prefab serialization. + /// </summary> + public interface ISupportsPrefabSerialization + { + /// <summary> + /// Gets or sets the serialization data of the object. + /// </summary> + 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 file="SerializationData.cs" company="Sirenix IVS"> +// 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. +// </copyright> +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using System; + using System.Collections.Generic; + using UnityEngine; + using Utilities; + + /// <summary> + /// Unity serialized data struct that contains all data needed by Odin serialization. + /// </summary> + [Serializable] + public struct SerializationData + { + /// <summary> + /// The name of the <see cref="PrefabModificationsReferencedUnityObjects"/> field. + /// </summary> + public const string PrefabModificationsReferencedUnityObjectsFieldName = "PrefabModificationsReferencedUnityObjects"; + + /// <summary> + /// The name of the <see cref="PrefabModifications"/> field. + /// </summary> + public const string PrefabModificationsFieldName = "PrefabModifications"; + + /// <summary> + /// The name of the <see cref="Prefab"/> field. + /// </summary> + public const string PrefabFieldName = "Prefab"; + + /// <summary> + /// 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 <see cref="IOverridesSerializationFormat"/> interface. + /// </summary> + [SerializeField] + public DataFormat SerializedFormat; + + /// <summary> + /// The serialized data when serializing with the Binray format. + /// </summary> + [SerializeField] + public byte[] SerializedBytes; + + /// <summary> + /// All serialized Unity references. + /// </summary> + [SerializeField] + public List<UnityEngine.Object> ReferencedUnityObjects; + + /// <summary> + /// Whether the object contains any serialized data. + /// </summary> + [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()); + } + } + } + + /// <summary> + /// 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. + /// </summary> + 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; + } + } + + /// <summary> + /// The serialized data when serializing with the JSON format. + /// </summary> + [SerializeField] + public string SerializedBytesString; + + /// <summary> + /// The reference to the prefab this is only populated in prefab scene instances. + /// </summary> + [SerializeField] + public UnityEngine.Object Prefab; + + /// <summary> + /// All serialized Unity references. + /// </summary> + [SerializeField] + public List<UnityEngine.Object> PrefabModificationsReferencedUnityObjects; + + /// <summary> + /// All Odin serialized prefab modifications. + /// </summary> + [SerializeField] + public List<string> PrefabModifications; + + /// <summary> + /// The serialized data when serializing with the Nodes format. + /// </summary> + [SerializeField] + public List<SerializationNode> SerializationNodes; + + /// <summary> + /// Resets all data. + /// </summary> + 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 file="SerializedBehaviour.cs" company="Sirenix IVS"> +// 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. +// </copyright> +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// <summary> + /// A Unity Behaviour which is serialized by the Sirenix serialization system. + /// </summary> +#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); + } + + /// <summary> + /// Invoked after deserialization has taken place. + /// </summary> + protected virtual void OnAfterDeserialize() + { + } + + /// <summary> + /// Invoked before serialization has taken place. + /// </summary> + 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 file="SerializedComponent.cs" company="Sirenix IVS"> +// 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. +// </copyright> +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// <summary> + /// A Unity Component which is serialized by the Sirenix serialization system. + /// </summary> +#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); + } + + /// <summary> + /// Invoked after deserialization has taken place. + /// </summary> + protected virtual void OnAfterDeserialize() + { + } + + /// <summary> + /// Invoked before serialization has taken place. + /// </summary> + 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 file="SerializedMonoBehaviour.cs" company="Sirenix IVS"> +// 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. +// </copyright> +//----------------------------------------------------------------------- + +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// <summary> + /// A Unity MonoBehaviour which is serialized by the Sirenix serialization system. + /// </summary> +#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); + } + + /// <summary> + /// Invoked after deserialization has taken place. + /// </summary> + protected virtual void OnAfterDeserialize() + { + } + + /// <summary> + /// Invoked before serialization has taken place. + /// </summary> + 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 file="SerializedScriptableObject.cs" company="Sirenix IVS"> +// 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. +// </copyright> +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// <summary> + /// A Unity ScriptableObject which is serialized by the Sirenix serialization system. + /// </summary> +#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); + } + + /// <summary> + /// Invoked after deserialization has taken place. + /// </summary> + protected virtual void OnAfterDeserialize() + { + } + + /// <summary> + /// Invoked before serialization has taken place. + /// </summary> + 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 file="SerializedStateMachineBehaviour.cs" company="Sirenix IVS"> +// 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. +// </copyright> +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// <summary> + /// A Unity StateMachineBehaviour which is serialized by the Sirenix serialization system. + /// </summary> +#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); + } + + /// <summary> + /// Invoked after deserialization has taken place. + /// </summary> + protected virtual void OnAfterDeserialize() + { + } + + /// <summary> + /// Invoked before serialization has taken place. + /// </summary> + 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 file="SerializedUnityObject.cs" company="Sirenix IVS"> +// 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. +// </copyright> +//----------------------------------------------------------------------- +namespace VRC.Udon.Serialization.OdinSerializer +{ + using UnityEngine; + + /// <summary> + /// A Unity ScriptableObject which is serialized by the Sirenix serialization system. + /// </summary> +#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); + } + + /// <summary> + /// Invoked after deserialization has taken place. + /// </summary> + protected virtual void OnAfterDeserialize() + { + } + + /// <summary> + /// Invoked before serialization has taken place. + /// </summary> + 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: |