Beispiel #1
0
        public unsafe bool BuildInputPerTile(List <NavMeshBuildInput> inputs)
        {
            HeightBounds = default;
            Tiles.Clear();
            TilesToBuild.Clear();

            BuildResult = new NavMeshBuildResult();

            NormalizeInputHeights(inputs);
            SetGlobalBounds(inputs);

            foreach (NavMeshBuildInput input in inputs)
            {
                int result = BuildTile(input.TileBounds.Coord, BuildSettings, AgentSettings, input, 1, out NavMeshTile tile);

                if (result == 0)
                {
                    Tiles[input.TileBounds.Coord] = tile;
                    BuildResult.TilesBuilt++;
                }
                else if (result != 110)
                {
                    BuildResult.Result = result;
                    return(false);
                }
            }

            BuildResult.Result = 0;

            return(true);
        }
Beispiel #2
0
        public unsafe bool BuildAllFromSingleInput(NavMeshBuildInput single)
        {
            HeightBounds = default;
            Tiles.Clear();
            TilesToBuild.Clear();

            List <NavMeshBuildInput> inputs = new List <NavMeshBuildInput>()
            {
                single
            };

            BuildResult = new NavMeshBuildResult();

            NormalizeInputHeights(inputs);
            SetGlobalBounds(inputs);

            foreach (NavMeshBuildInput input in inputs)
            {
                var tiles = NavMeshBuildUtils.GetOverlappingTiles(BuildSettings, input.TileBounds.Bounds);
                foreach (var tileCoord in tiles)
                {
                    int result = BuildTile(tileCoord, BuildSettings, AgentSettings, input, 1, out NavMeshTile tile);
                    if (result == 0)
                    {
                        Tiles[tileCoord] = tile;
                        BuildResult.TilesBuilt++;
                    }
                    else if (result != 110)
                    {
                        BuildResult.Result = result;
                        return(false);
                    }
                }
            }

            BuildResult.Result = 0;

            return(true);
        }