void ChangeDirector(IDirector director) { if (m_Director != null) { m_Director.Dispose(); m_Director = null; } if (m_SequenceEditor != null) { m_SequenceEditor.Dispose(); m_SequenceEditor = null; } m_Director = director; Repaint(); }
private void OnGUI() { var state = CheckState(); if (state == State.Disable) { return; } var sequence = m_Director.Sequence; var nextSequence = (SequenceBehaviour)EditorGUILayout.ObjectField("Sequence Asset", sequence, typeof(SequenceBehaviour), false); if (sequence != nextSequence) { m_Director.Sequence = nextSequence; m_SequenceEditor = null; ChangeData(); } if (state == State.NoSequence) { EditorGUILayout.HelpBox("Assign a sequence asset into Director", MessageType.Warning); return; } if (state == State.NeedPrepare) { m_Director?.Prepare(mode: TickMode.Manual); } if (m_SequenceEditor == null) { m_SequenceEditor = new SequenceBehaviourEditor(); m_SequenceEditor.Initialize(this, m_Director.Sequence); } m_SequenceEditor.DrawSetting(m_Director.Blackboard); m_BlackboardEditor.Draw(m_Director.Blackboard); // Tool bar if (m_SequenceEditor != null) { var style = EditorStyles.toolbar; using (new EditorGUILayout.HorizontalScope(style, GUILayout.ExpandWidth(true))) { DrawPlayer(); EditorGUILayout.Space(); m_SequenceEditor.DrawToolBar(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Refresh", EditorStyles.toolbarButton)) { m_SequenceEditor = null; ChangeData(); return; } } } m_Navigator.OnGUI(m_Director.TotalFrame, m_Director.TotalFrame, m_Director.CurrentFrame); m_Director.CurrentFrame = m_Indicator.OnGUI(m_Director.TotalFrame, m_Director.TotalFrame, m_Director.CurrentFrame, m_Director.Sequence.FrameRate, m_Navigator.MinFrame, m_Navigator.MaxFrame, Focus); m_SequenceEditor.Draw(m_Navigator, m_Director.TotalFrame, m_Director.CurrentFrame, m_Director.Blackboard); }