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); }
private void UpdateBuilder() { if (!mBuilder.IsFinished) { mBuilder.Build(); return; } mLogger.Log(mBuilder.Messages); NavmeshBuild build = mContext.Build; // Caller has validated. if (mBuilder.State == InputBuildState.Aborted) { FinalizeOnFail("Input data compile failed: Builder aborted.", true); return; } mAssets = mBuilder.Result; TriangleMesh mesh = mAssets.geometry; if (!InputGeometryBuilder.IsValid(mesh, mAssets.areas)) { FinalizeOnFail("Input geometry failed validation. (Malformed data.)", true); return; } InputGeometryBuilder gbuilder = InputGeometryBuilder.UnsafeCreate(mesh , mAssets.areas , build.Config.GetConfig().WalkableSlope , true); if (gbuilder == null) { FinalizeOnFail("Could not create input geometry builder. (Internal error.)", true); return; } // Release unneeded assets. mAssets.geometry = null; mAssets.areas = null; mBuilder = null; mTask = InputBuildTask.Create(gbuilder, BuildTaskProcessor.HighPriority); if (mTask == null) { FinalizeOnFail("Task creation failed. (Internal error.)", true); } else if (mContext.QueueTask(mTask)) { mLogger.PostTrace("Completed input build. Submitted geometry build task." , mContext.Build); mState = State.Task; } else { FinalizeOnFail("Task submission failed. (Internal error.)", true); } }