private void RefreshProgressBar(Progress.Item[] progressItems) { var taskCount = Progress.GetRunningProgressCount(); if (taskCount == 0) { m_LastProgressId = -1; m_LastElapsedTime = 0f; m_CurrentProgressNotResponding = false; m_ProgressStatus.text = String.Empty; m_ProgressPercentageStatus.text = String.Empty; } else { var currentItem = progressItems[0]; if (!String.IsNullOrEmpty(currentItem.description)) { m_ProgressStatus.tooltip = currentItem.name + "\r\n" + currentItem.description; } m_ProgressPercentageStatus.text = Progress.globalProgress.ToString("P", percentageFormat); var remainingTimeText = ""; if (Progress.EnumerateItems().Any(item => item.timeDisplayMode == Progress.TimeDisplayMode.ShowRemainingTime) && Progress.EnumerateItems().All(item => !item.indefinite) && Progress.globalRemainingTime.TotalSeconds > 0) { remainingTimeText = $" [{Progress.globalRemainingTime:g}]"; } if (taskCount > 1) { m_ProgressStatus.text = $"Multiple tasks ({taskCount}){remainingTimeText}"; } else { m_ProgressStatus.text = $"{currentItem.name}{remainingTimeText}"; } m_LastProgressId = currentItem.id; m_CurrentProgressNotResponding = true; for (int i = 0; i < progressItems.Length; ++i) { if (!progressItems[i].responding) { m_LastProgressId = progressItems[i].id; continue; } m_CurrentProgressNotResponding = false; break; } m_LastElapsedTime = Mathf.Max(m_LastElapsedTime, currentItem.elapsedTime); if (m_CurrentProgressNotResponding) { m_LastElapsedTime = float.MaxValue; } } RepaintProgress(progressItems); }
private void RefreshProgressBar(Progress.Item[] progressItems) { if (!this) { return; } if (!Progress.running) { // If we enter here, it means the last remaining progresses just finished or paused. ClearProgressStatus(); RepaintProgress(progressItems); return; } var idleCount = Progress.EnumerateItems().Count(item => item.running && item.priority == (int)Progress.Priority.Idle); var taskCount = Progress.GetRunningProgressCount() - idleCount; if (taskCount == 0) { ClearProgressStatus(); } else { var currentItem = progressItems.FirstOrDefault(item => item.priority != (int)Progress.Priority.Idle); if (currentItem != null && !String.IsNullOrEmpty(currentItem.description)) { m_ProgressStatus.tooltip = currentItem.name + "\r\n" + currentItem.description; } m_ProgressPercentageStatus.text = Progress.globalProgress.ToString("P", percentageFormat); var remainingTimeText = ""; var runningProgresses = Progress.EnumerateItems().Where(item => item.running); if (Progress.globalRemainingTime.TotalSeconds > 0 && runningProgresses.Any(item => item.timeDisplayMode == Progress.TimeDisplayMode.ShowRemainingTime && item.priority != (int)Progress.Priority.Idle) && runningProgresses.All(item => !item.indefinite)) { remainingTimeText = $" [{Progress.globalRemainingTime:g}]"; } if (taskCount > 1) { m_ProgressStatus.text = $"Multiple tasks ({taskCount}){remainingTimeText}"; } else { m_ProgressStatus.text = $"{currentItem?.name}{remainingTimeText}"; } ScheduleCheckProgressUnresponsive(); } RepaintProgress(progressItems); }
private void RefreshProgressBar(ProgressItem[] progressItems) { var taskCount = Progress.GetRunningProgressCount(); if (taskCount == 0) { m_LastProgressId = -1; m_LastElapsedTime = 0f; m_CurrentProgressNotResponding = false; m_ProgressStatus.text = String.Empty; m_ProgressPercentageStatus.text = String.Empty; } else { var currentItem = progressItems[0]; if (!String.IsNullOrEmpty(currentItem.description)) { m_ProgressStatus.tooltip = currentItem.name + "\r\n" + currentItem.description; } m_ProgressPercentageStatus.text = Progress.GlobalProgress.ToString("P", percentageFormat); if (taskCount > 1) { m_ProgressStatus.text = $"Multiple tasks ({taskCount})"; } else { m_ProgressStatus.text = currentItem.name; } m_LastProgressId = currentItem.id; m_CurrentProgressNotResponding = true; for (int i = 0; i < progressItems.Length; ++i) { if (!progressItems[i].responding) { m_LastProgressId = progressItems[i].id; continue; } m_CurrentProgressNotResponding = false; break; } m_LastElapsedTime = Mathf.Max(m_LastElapsedTime, currentItem.elapsedTime); if (m_CurrentProgressNotResponding) { m_LastElapsedTime = float.MaxValue; } } RepaintProgress(progressItems); }
private void RefreshProgressBar(Progress.Item[] progressItems) { var taskCount = Progress.GetRunningProgressCount(); if (taskCount == 0) { m_ProgressStatus.text = String.Empty; m_ProgressPercentageStatus.text = String.Empty; } else { var currentItem = progressItems[0]; if (!String.IsNullOrEmpty(currentItem.description)) { m_ProgressStatus.tooltip = currentItem.name + "\r\n" + currentItem.description; } m_ProgressPercentageStatus.text = Progress.globalProgress.ToString("P", percentageFormat); var remainingTimeText = ""; if (progressItems.Any(item => item.timeDisplayMode == Progress.TimeDisplayMode.ShowRemainingTime) && progressItems.All(item => !item.indefinite) && Progress.globalRemainingTime.TotalSeconds > 0) { remainingTimeText = $" [{Progress.globalRemainingTime:g}]"; } if (taskCount > 1) { m_ProgressStatus.text = $"Multiple tasks ({taskCount}){remainingTimeText}"; } else { m_ProgressStatus.text = $"{currentItem.name}{remainingTimeText}"; } DelayCheckProgressUnresponsive(); } RepaintProgress(progressItems); }