Fix navmesh tiles build
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user