Ejemplo n.º 1
0
        /// <summary>
        /// Gets the result of the completed task.
        /// </summary>
        /// <param name="result">The result of the completed task.</param>
        /// <returns>True if the result is available, false if the task should abort with no
        /// result. (I.e. An internal abort.)</returns>
        protected override bool GetResult(out TileBuildAssets result)
        {
            BuildContext logger = new BuildContext();

            result = new TileBuildAssets();

            NavmeshTileBuildData tbd =
                NMBuild.GetBuildData(logger, mTileX, mTileZ
                                     , mPolyData, (mDetailData == null ? null : mDetailData), mConnections
                                     , mBVTreeEnabled);

            AddMessages(logger.GetMessages());

            if (tbd == null)
            {
                return(false);
            }

            NavmeshTileData td = NavmeshTileData.Create(tbd);

            if (td.Size == 0)
            {
                AddMessage(string.Format(
                               "Could not create {2} object. Cause unknown."
                               + " Tile: ({0},{1})"
                               , mTileX, mTileZ, td.GetType().Name));

                return(false);
            }

            result = new TileBuildAssets(mTileX, mTileZ, td, tbd.PolyCount);

            return(true);
        }