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); }
private bool CompileInput() { mContext.ResetLog(); InputAssets assets = BuildInput(false); if (assets.geometry == null) { mContext.PostError("No input geometry generated.", mBuild); return(false); } org.critterai.geom.TriangleMesh mesh = assets.geometry; InputGeometryBuilder gbuilder = InputGeometryBuilder.UnsafeCreate(mesh , assets.areas , mBuild.Config.GetConfig().WalkableSlope , true); if (gbuilder == null) { mContext.PostError("Could not create input geometry builder. (Internal error.)" , mBuild); return(false); } gbuilder.BuildAll(); if (mBuild.SetInputData(mContext, gbuilder.Result , assets.info, assets.processors, assets.conns , false)) { mContext.PostTrace("Input compile complete.", mBuild); } return(true); }