private void DrawTabbedPanelSelector()
        {
            SidePanelMode prevMode = m_SidePanelViewMode;
            bool hasInputFrames = m_ProcessingNodeStack.inputSequence.frames.Count > 0;
            SidePanelMode newMode = (SidePanelMode)VFXToolboxGUIUtility.TabbedButtonsGUILayout(
                    (int)prevMode,
                    new string[] { "Input Frames", "Processors", "Export"},
                    new bool [] { true, hasInputFrames, hasInputFrames}
                );

            if(prevMode != newMode)
            {
                m_SidePanelViewMode = newMode;

                switch(m_SidePanelViewMode)
                {
                    case SidePanelMode.InputFrames:

                        m_PreviewCanvas.sequence = m_ProcessingNodeStack.inputSequence;

                        break;

                    case SidePanelMode.Processors:

                        if (m_LockedPreviewProcessor != null)
                            m_PreviewCanvas.sequence = m_LockedPreviewProcessor.OutputSequence;
                        else
                        {
                            if(m_CurrentProcessingNode != null)
                                m_PreviewCanvas.sequence = m_CurrentProcessingNode.OutputSequence;
                            else
                            {
                                if (m_ProcessingNodeStack.nodes.Count > 0)
                                    m_PreviewCanvas.sequence = m_ProcessingNodeStack.nodes[m_ProcessingNodeStack.nodes.Count - 1].OutputSequence;
                                else
                                    m_PreviewCanvas.sequence = m_ProcessingNodeStack.inputSequence;
                            }
                        }

                        break;

                    case SidePanelMode.Export:

                        m_PreviewCanvas.sequence = m_ProcessingNodeStack.outputSequence;

                        break;
                }

                m_PreviewCanvas.InvalidateRenderTarget();
                m_PreviewCanvas.UpdateCanvasSequence();
                m_PreviewCanvas.Invalidate(true);
            }

        }
Пример #2
0
        public void OnUndoRedo()
        {
            if (m_CurrentAsset == null)
            {
                return;
            }

            SidePanelMode bkpSidePanelMode = m_SidePanelViewMode;

            int hash = GetInputTexturesHashCode();

            if (m_InputFramesHashCode != hash || m_CurrentAsset.inheritSettingsReference != null)
            {
                LoadAsset(m_CurrentAsset);
            }
            else
            {
                m_processorStack.LoadProcessorsFromAsset(m_CurrentAsset);
                RestoreProcessorView();
            }

            if (m_CurrentAsset.inputFrameGUIDs.Count > 0)
            {
                m_SidePanelViewMode = bkpSidePanelMode;
            }
            else
            {
                m_SidePanelViewMode = SidePanelMode.InputFrames;
            }

            foreach (FrameProcessor p in m_processorStack.processors)
            {
                p.Refresh();
                p.Invalidate();
            }

            Repaint();
        }