Пример #1
0
        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();
        }
Пример #2
0
        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);
        }