FSequenceTrackCache.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. //#define FLUX_DEBUG
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. namespace Flux
  5. {
  6. /// @brief Cache for FSequenceTrack
  7. public class FSequenceTrackCache : FTrackCache {
  8. public FSequenceTrackCache( FSequenceTrack track )
  9. :base( track )
  10. {
  11. }
  12. protected override bool BuildInternal()
  13. {
  14. #if FLUX_DEBUG
  15. Debug.LogWarning("Creating Sequence Preview");
  16. #endif
  17. FSequence sequence = Track.Owner.GetComponent<FSequence>();
  18. foreach( FContainer container in sequence.Containers )
  19. {
  20. foreach( FTimeline timeline in container.Timelines )
  21. {
  22. foreach( FTrack track in timeline.Tracks )
  23. {
  24. if( (track.RequiresForwardCache && Track.Sequence.IsPlayingForward)
  25. || (track.RequiresBackwardsCache && !Track.Sequence.IsPlayingForward)
  26. || (track.RequiresEditorCache && !Application.isPlaying) )
  27. {
  28. track.CreateCache();
  29. }
  30. }
  31. }
  32. }
  33. return true;
  34. }
  35. protected override bool ClearInternal()
  36. {
  37. #if FLUX_DEBUG
  38. Debug.LogWarning("Destroying Sequence Preview");
  39. #endif
  40. FSequence sequence = Track.Owner.GetComponent<FSequence>();
  41. // foreach( FContainer container in sequence.Containers )
  42. // {
  43. // foreach( FTimeline timeline in container.Timelines )
  44. // {
  45. // foreach( FTrack track in timeline.Tracks )
  46. // {
  47. // if( track.CanTogglePreview )
  48. // {
  49. // track.CanPreview = false;
  50. // }
  51. // }
  52. // }
  53. // }
  54. foreach( FContainer container in sequence.Containers )
  55. {
  56. foreach( FTimeline timeline in container.Timelines )
  57. {
  58. foreach( FTrack track in timeline.Tracks )
  59. {
  60. if( track.HasCache )
  61. {
  62. track.ClearCache();
  63. }
  64. }
  65. }
  66. }
  67. FAnimationTrack.DeleteAnimationPreviews( sequence );
  68. return true;
  69. }
  70. // /// @brief Starts playback
  71. // public void StartPlayback()
  72. // {
  73. // if( _inPlayback )
  74. // return;
  75. // Debug.Log("Start Playback");
  76. //
  77. // _inPlayback = true;
  78. // }
  79. //
  80. // /// @brief Stops playback
  81. // public void StopPlayback()
  82. // {
  83. // if( !_inPlayback )
  84. // return;
  85. // Debug.Log("Stop Playback");
  86. // Animator.StopPlayback();
  87. //
  88. // _inPlayback = false;
  89. // }
  90. public override void GetPlaybackAt( float sequenceTime )
  91. {
  92. Track.UpdateEventsEditor( (int)(sequenceTime * Track.Sequence.FrameRate), sequenceTime );
  93. }
  94. }
  95. }