Fix navmesh tiles build

This commit is contained in:
Wojtek Figat
2021-01-18 10:51:55 +01:00
parent 01a30faa62
commit 2ae78b9afd
2 changed files with 22 additions and 8 deletions

View File

@@ -590,18 +590,31 @@ bool GenerateTile(NavMesh* navMesh, NavMeshRuntime* runtime, int32 x, int32 y, B
ScopeLock lock(runtime->Locker);
// Add tile data
navMesh->IsDataDirty = true;
auto& tile = navMesh->Data.Tiles.AddOne();
tile.PosX = x;
tile.PosY = y;
tile.Layer = layer;
NavMeshTileData* tile = nullptr;
for (int32 i = 0; i < navMesh->Data.Tiles.Count(); i++)
{
auto& e = navMesh->Data.Tiles[i];
if (e.PosX == x && e.PosY == y && e.Layer == layer)
{
tile = &e;
break;
}
}
if (!tile)
{
// Add new tile
tile = &navMesh->Data.Tiles.AddOne();
tile->PosX = x;
tile->PosY = y;
tile->Layer = layer;
}
// Copy data
tile.Data.Copy(navData, navDataSize);
// Copy data to the tile
tile->Data.Copy(navData, navDataSize);
// Add tile to navmesh
runtime->AddTile(navMesh, tile);
runtime->AddTile(navMesh, *tile);
}
dtFree(navData);

View File

@@ -13,6 +13,7 @@
#define MAX_NODES 2048
#define USE_DATA_LINK 0
#define USE_NAV_MESH_ALLOC 1
// TODO: try not using USE_NAV_MESH_ALLOC
#define DEFAULT_NAV_QUERY_EXTENT_HORIZONTAL 50.0f
#define DEFAULT_NAV_QUERY_EXTENT_VERTICAL 250.0f