SerializedNetworkBehaviour.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //-----------------------------------------------------------------------
  2. // <copyright file="SerializedNetworkBehaviour.cs" company="Sirenix IVS">
  3. // Copyright (c) Sirenix IVS. All rights reserved.
  4. // </copyright>
  5. //-----------------------------------------------------------------------
  6. #if !UNITY_2019_1_OR_NEWER
  7. #pragma warning disable 0618
  8. namespace Sirenix.OdinInspector
  9. {
  10. using Sirenix.Serialization;
  11. using UnityEngine;
  12. using UnityEngine.Networking;
  13. /// <summary>
  14. /// A Unity NetworkBehaviour which is serialized by the Sirenix serialization system.
  15. /// Please note that Odin's custom serialization only works for non-synced variables - [SyncVar] and SyncLists still have the same limitations.
  16. /// </summary>
  17. [ShowOdinSerializedPropertiesInInspector]
  18. public abstract class SerializedNetworkBehaviour : NetworkBehaviour, ISerializationCallbackReceiver, ISupportsPrefabSerialization
  19. {
  20. [SerializeField, HideInInspector]
  21. private SerializationData serializationData;
  22. SerializationData ISupportsPrefabSerialization.SerializationData { get { return this.serializationData; } set { this.serializationData = value; } }
  23. void ISerializationCallbackReceiver.OnAfterDeserialize()
  24. {
  25. UnitySerializationUtility.DeserializeUnityObject(this, ref this.serializationData);
  26. this.OnAfterDeserialize();
  27. }
  28. void ISerializationCallbackReceiver.OnBeforeSerialize()
  29. {
  30. UnitySerializationUtility.SerializeUnityObject(this, ref this.serializationData);
  31. this.OnBeforeSerialize();
  32. }
  33. /// <summary>
  34. /// Invoked after deserialization has taken place.
  35. /// </summary>
  36. protected virtual void OnAfterDeserialize()
  37. {
  38. }
  39. /// <summary>
  40. /// Invoked before serialization has taken place.
  41. /// </summary>
  42. protected virtual void OnBeforeSerialize()
  43. {
  44. }
  45. #if UNITY_EDITOR
  46. [HideInTables]
  47. [OnInspectorGUI, PropertyOrder(int.MinValue)]
  48. private void InternalOnInspectorGUI()
  49. {
  50. EditorOnlyModeConfigUtility.InternalOnInspectorGUI(this);
  51. }
  52. #endif
  53. }
  54. }
  55. #endif // UNITY_2019_1_OR_NEWER