FSequenceTrackEditor.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using UnityEngine;
  2. using UnityEditor;
  3. using System.Collections.Generic;
  4. using Flux;
  5. namespace FluxEditor
  6. {
  7. [FEditor(typeof(FSequenceTrack))]
  8. public class FSequenceTrackEditor : FTrackEditor
  9. {
  10. private FSequenceEditor _sequenceEditor = null;
  11. public override void Init(FObject obj, FEditor owner)
  12. {
  13. base.Init(obj, owner);
  14. if( _sequenceEditor == null )
  15. {
  16. _sequenceEditor = FSequenceEditor.CreateInstance<FSequenceEditor>();
  17. _sequenceEditor.Init( (Editor)null/*SequenceEditor*/ );
  18. _sequenceEditor.OpenSequence( Track.Owner.GetComponent<FSequence>() );
  19. // if( Track.PreviewDirtiesScene && !Track.HasCache )
  20. // {
  21. // _sequenceEditor.TurnOnAllPreviews( false );
  22. // }
  23. }
  24. }
  25. public override void UpdateEventsEditor( int frame, float time )
  26. {
  27. base.UpdateEventsEditor( frame, time );
  28. FEvent[] evts = new FEvent[2];
  29. int numEvents = Track.GetEventsAt( frame, evts );
  30. if( numEvents > 0 )
  31. {
  32. int startOffset = ((FPlaySequenceEvent)evts[0]).StartOffset;
  33. _sequenceEditor.SetCurrentFrame( startOffset + frame - evts[0].Start ); /// @TODO handle offset
  34. if( numEvents > 1 )
  35. {
  36. startOffset = ((FPlaySequenceEvent)evts[1]).StartOffset;
  37. _sequenceEditor.SetCurrentFrame( startOffset + frame - evts[1].Start );
  38. }
  39. }
  40. }
  41. }
  42. }