public void OnGUI(Rect area) { switch (mState) { case State.Builder: EditorGUI.ProgressBar(area , InputBuilder.ToProgress(mBuilder.State) , InputBuilder.ToLabel(mBuilder.State)); break; case State.Task: float delta = (float)(EditorApplication.timeSinceStartup - mChunkTime); if (delta > 15) { mChunkTime = EditorApplication.timeSinceStartup; delta = 0; } EditorGUI.ProgressBar(area , (delta / 15) , "Chunking geometry..."); break; } }
private InputAssets BuildInput(bool ownProgress) { InputBuildOption options = (mBuild.AutoCleanGeometry ? InputBuildOption.AutoCleanGeometry : 0); InputBuilder builder = InputBuilder.Create(mBuild.SceneQuery, mBuild.GetInputProcessors(), options); if (builder == null) { mContext.LogError("Could not create input builder.", mBuild); return(new InputAssets()); } try { while (!builder.IsFinished) { builder.Build(); if (EditorUtility.DisplayCancelableProgressBar("Compile Input" , InputBuilder.ToLabel(builder.State) , InputBuilder.ToProgress(builder.State))) { return(new InputAssets()); } } } finally { if (ownProgress) { EditorUtility.ClearProgressBar(); } } mContext.Log(builder.Messages); if (builder.State != InputBuildState.Complete) { mContext.LogError("Input builder aborted.", mBuild); return(new InputAssets()); } InputAssets assets = builder.Result; org.critterai.geom.TriangleMesh mesh = assets.geometry; if (!InputGeometryBuilder.IsValid(mesh, assets.areas)) { mContext.LogError("Input geometry failed validation. (Malformed data.)", mBuild); return(new InputAssets()); } return(builder.Result); }