//----------------------------------------------------------------------- // // 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() { } } }