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_ != AutomateStage.kWaitForDoneButton) { if (GUILayout.Button("Cancel")) { if (capture_status_ != null) { capture_status_.CancelTask(); } } } if (bake_stage_ == AutomateStage.kWaitForDoneButton) { if (GUILayout.Button("Done")) { bake_stage_ = AutomateStage.kComplete; } } }
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_[curr_capture_]); if (bake_stage_ == AutomateStage.kCapture) { --capture_timer_; if (capture_timer_ == 0) { capture_timer_ = kTimerExpirationsPerCapture; monitored_capture_[curr_capture_].RunCapture(); if (monitored_capture_[curr_capture_].IsCaptureComplete() && capture_status_.TaskContinuing()) { monitored_capture_[curr_capture_].EndCapture(); monitored_capture_[curr_capture_] = null; if (curr_capture_ == (num_captures_ - 1)) { Debug.Log("Finished"); bake_stage_ = AutomateStage.kWaitForDoneButton; } else { capture_status_.SendProgress("Beginning capture " + (curr_capture_ + 1), (curr_capture_ + 1) / num_captures_); Debug.Log("Moving on to capture " + (curr_capture_ + 1)); curr_capture_++; } } } if (capture_status_ != null && !capture_status_.TaskContinuing()) { bake_stage_ = AutomateStage.kComplete; if (monitored_capture_ != null) { for (int i = 0; i < num_captures_; i++) { if (monitored_capture_[i] != null) { monitored_capture_[i].EndCapture(); monitored_capture_[i] = null; } } } } } // Repaint with updated progress the GUI on each wall-clock time tick. Repaint(); }
public void SetupCaptureProcess(CaptureHeadbox[] capture_notification_component, CaptureBuilder[] capture) { capture_timer_ = kTimerExpirationsPerCapture; bake_stage_ = AutomateStage.kCapture; last_time_ = Time.realtimeSinceStartup; capture_notification_component_ = capture_notification_component; num_captures_ = capture_notification_component.Length; monitored_capture_ = capture; curr_capture_ = 0; }