Ejemplo n.º 1
0
    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
    }