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);
|
ScopeLock lock(runtime->Locker);
|
||||||
|
|
||||||
// Add tile data
|
|
||||||
navMesh->IsDataDirty = true;
|
navMesh->IsDataDirty = true;
|
||||||
auto& tile = navMesh->Data.Tiles.AddOne();
|
NavMeshTileData* tile = nullptr;
|
||||||
tile.PosX = x;
|
for (int32 i = 0; i < navMesh->Data.Tiles.Count(); i++)
|
||||||
tile.PosY = y;
|
{
|
||||||
tile.Layer = layer;
|
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
|
// Copy data to the tile
|
||||||
tile.Data.Copy(navData, navDataSize);
|
tile->Data.Copy(navData, navDataSize);
|
||||||
|
|
||||||
// Add tile to navmesh
|
// Add tile to navmesh
|
||||||
runtime->AddTile(navMesh, tile);
|
runtime->AddTile(navMesh, *tile);
|
||||||
}
|
}
|
||||||
|
|
||||||
dtFree(navData);
|
dtFree(navData);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
#define MAX_NODES 2048
|
#define MAX_NODES 2048
|
||||||
#define USE_DATA_LINK 0
|
#define USE_DATA_LINK 0
|
||||||
#define USE_NAV_MESH_ALLOC 1
|
#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_HORIZONTAL 50.0f
|
||||||
#define DEFAULT_NAV_QUERY_EXTENT_VERTICAL 250.0f
|
#define DEFAULT_NAV_QUERY_EXTENT_VERTICAL 250.0f
|
||||||
|
|||||||
Reference in New Issue
Block a user