public void Update()
        {
            // Refresh the Editor GUI to finish the task.
            UnityEditor.EditorUtility.SetDirty(capture_notification_component_);

            if (bake_stage_ == BakeStage.kRunning)
            {
                if (!monitored_runner_.IsProcessRunning() && runner_status_.TaskContinuing())
                {
                    bake_stage_ = BakeStage.kWaitForDoneButton;
                }


                if (runner_status_ != null && !runner_status_.TaskContinuing())
                {
                    bake_stage_ = BakeStage.kComplete;
                    if (monitored_runner_ != null)
                    {
                        monitored_runner_.InterruptProcess();
                        monitored_runner_ = null;
                    }
                }
            }

            // Repaint with updated progress the GUI on each wall-clock time tick.
            Repaint();
        }
        public void OnGUI()
        {
            // Reserve layout space for the progress bar, equal to the space for a
            // textfield:
            Rect progress_rect = GUILayoutUtility.GetRect(18, 18, "TextField");

            EditorGUI.ProgressBar(progress_rect, progress_complete_, progress_message_);
            EditorGUILayout.Space();

            if (bake_stage_ != BakeStage.kWaitForDoneButton)
            {
                if (GUILayout.Button("Cancel"))
                {
                    if (runner_status_ != null)
                    {
                        runner_status_.CancelTask();
                    }
                }
            }

            if (bake_stage_ == BakeStage.kWaitForDoneButton)
            {
                if (GUILayout.Button("Done"))
                {
                    bake_stage_ = BakeStage.kComplete;
                }
            }
        }
 public void SetupRunnerProcess(CaptureHeadbox capture_notification_component,
                                SeuratPipelineRunner runner)
 {
     bake_stage_ = BakeStage.kRunning;
     capture_notification_component_ = capture_notification_component;
     monitored_runner_ = runner;
     monitored_runner_.Run();
 }
 public void SetupRunnerProcess(SeuratAutomator capture_notification_component,
                                SeuratPipelineCollectionRunner runner)
 {
     bake_stage_ = BakeStage.kRunning;
     capture_notification_component_ = capture_notification_component;
     monitored_runner_ = runner;
     monitored_runner_.Run();
 }
 public void SetupCaptureProcess(CaptureHeadbox capture_notification_component,
                                 CaptureBuilder capture)
 {
     capture_timer_ = kTimerExpirationsPerCapture;
     bake_stage_    = BakeStage.kCapture;
     last_time_     = Time.realtimeSinceStartup;
     capture_notification_component_ = capture_notification_component;
     monitored_capture_ = capture;
 }
        public void Update()
        {
            if (capture_status_ != null && capture_status_.TaskContinuing() && !UpdateAndCheckUiTimerReady())
            {
                return;
            }

            // Refresh the Editor GUI to finish the task.
            UnityEditor.EditorUtility.SetDirty(capture_notification_component_);

            if (bake_stage_ == BakeStage.kCapture)
            {
                --capture_timer_;
                if (capture_timer_ == 0)
                {
                    capture_timer_ = kTimerExpirationsPerCapture;

                    monitored_capture_.RunCapture();

                    if (monitored_capture_.IsCaptureComplete() &&
                        capture_status_.TaskContinuing())
                    {
                        monitored_capture_.EndCapture();
                        monitored_capture_ = null;

                        bake_stage_ = BakeStage.kWaitForDoneButton;
                    }
                }

                if (capture_status_ != null && !capture_status_.TaskContinuing())
                {
                    bake_stage_ = BakeStage.kComplete;
                    if (monitored_capture_ != null)
                    {
                        monitored_capture_.EndCapture();
                        monitored_capture_ = null;
                    }
                }
            }

            // Repaint with updated progress the GUI on each wall-clock time tick.
            Repaint();
        }