Нет описания
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

TrackUpgrade.cs 2.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System;
  2. using UnityEngine.Serialization;
  3. namespace UnityEngine.Timeline
  4. {
  5. partial class TrackAsset : ISerializationCallbackReceiver
  6. {
  7. internal enum Versions
  8. {
  9. Initial = 0,
  10. RotationAsEuler = 1,
  11. RootMotionUpgrade = 2,
  12. AnimatedTrackProperties = 3
  13. }
  14. const int k_LatestVersion = (int)Versions.AnimatedTrackProperties;
  15. [SerializeField, HideInInspector] int m_Version;
  16. [Obsolete("Please use m_InfiniteClip (on AnimationTrack) instead.", false)]
  17. [SerializeField, HideInInspector, FormerlySerializedAs("m_animClip")]
  18. internal AnimationClip m_AnimClip;
  19. /// <summary>
  20. /// Called before a track is serialized.
  21. /// </summary>
  22. protected virtual void OnBeforeTrackSerialize() { }
  23. /// <summary>
  24. /// Called after a track has been deserialized.
  25. /// </summary>
  26. protected virtual void OnAfterTrackDeserialize() { }
  27. internal virtual void OnUpgradeFromVersion(int oldVersion) { }
  28. /// <summary>
  29. /// Called before Unity serializes this object.
  30. /// </summary>
  31. void ISerializationCallbackReceiver.OnBeforeSerialize()
  32. {
  33. m_Version = k_LatestVersion;
  34. //make sure children are correctly parented
  35. if (m_Children != null)
  36. {
  37. for (var i = m_Children.Count - 1; i >= 0; i--)
  38. {
  39. var asset = m_Children[i] as TrackAsset;
  40. if (asset != null && asset.parent != this)
  41. asset.parent = this;
  42. }
  43. }
  44. OnBeforeTrackSerialize();
  45. }
  46. /// <summary>
  47. /// Called after Unity deserializes this object.
  48. /// </summary>
  49. void ISerializationCallbackReceiver.OnAfterDeserialize()
  50. {
  51. // Clear the clip cache when a deserialize is performed, or
  52. // we can get out of sync when performing Undo
  53. m_ClipsCache = null;
  54. Invalidate();
  55. if (m_Version < k_LatestVersion)
  56. {
  57. UpgradeToLatestVersion(); //upgrade TrackAsset
  58. OnUpgradeFromVersion(m_Version); //upgrade derived classes
  59. }
  60. foreach (var marker in GetMarkers())
  61. {
  62. marker.Initialize(this);
  63. }
  64. OnAfterTrackDeserialize();
  65. }
  66. //fields that are used for upgrading should be put here, ideally as read-only
  67. void UpgradeToLatestVersion()
  68. { }
  69. //upgrade code should go into this class
  70. static class TrackAssetUpgrade
  71. { }
  72. }
  73. }