protected void displayProgressBar(int value) { #if UNITY_EDITOR System.DateTime current = System.DateTime.Now; System.TimeSpan delta = current - prStartTime; // This delay for displaying the progress bar is so the bar won't flicker for really quick updates // (less than a few seconds). Also, when we do show the progress bar the focus of the current // inspector control is lost. if (prUseDelay && delta.TotalSeconds < HoudiniConstants.HAPI_SEC_BEFORE_PROGRESS_BAR_SHOW) { EditorUtility.ClearProgressBar(); return; } // If there are no changes to the progress bar value or message don't re-display it again. if (value == myLastValue && prMessage == myLastMsg && delta == prCurrentDuration) { return; } prCurrentValue = value; string message = ""; if (delta.Hours > 0) { message = delta.Hours + "h " + delta.Minutes + "m " + delta.Seconds + "s - " + prMessage; } else if (delta.Minutes > 0) { message = delta.Minutes + "m " + delta.Seconds + "s - " + prMessage; } else if (delta.Seconds > 0) { message = delta.Seconds + "s - " + prMessage; } else { message = prMessage; } string title = prTitle; if (prAsset != null && prAsset.prAssetName != "ASSET_NAME") { title = "Building Houdini Asset: " + prAsset.prAssetName; } bool result = !EditorUtility.DisplayCancelableProgressBar( title, message, Mathf.InverseLerp(0, prTotal, prCurrentValue)); if (!result) { prCurrentDuration = new System.TimeSpan(0); myLastValue = -1; myLastMsg = ""; HoudiniHost.interrupt(); throw new HoudiniErrorProgressCancelled(); } else { myLastValue = value; myLastMsg = prMessage; prCurrentDuration = delta; } #endif // UNITY_EDITOR }