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); }