So this is my funktion to save a mesh.
Code:
void Sample_TileMesh::saveAll(const char* path, const dtNavMesh* mesh)
{
int TileX = 40;
int TileY = 33;
int tileTempStartX = (TileX * 4) -3;
int tileTempStartY = (TileY * 4) -3;
int size = 4;
int TempCountX = 0,TempCountY = 0;
int iA = 0;
int iB = 0;
if (!mesh) return;
FILE* fp = fopen(path, "wb");
if (!fp)
return;
ofstream myfile;
myfile.open ("Log.txt");
// Store header.
NavMeshSetHeader header;
header.magic = NAVMESHSET_MAGIC;
header.version = NAVMESHSET_VERSION;
header.numTiles = 0;
for (int i = 0; i < mesh->getMaxTiles(); ++i)
{
const dtMeshTile* tile = mesh->getTile(i);
if (!tile || !tile->header || !tile->dataSize) continue;
header.numTiles++;
}
memcpy(&header.params, mesh->getParams(), sizeof(dtNavMeshParams));
fwrite(&header, sizeof(NavMeshSetHeader), 1, fp);
// Store tiles.
for (int i = 0; i < mesh->getMaxTiles(); ++i)
{
const dtMeshTile* tile = mesh->getTile(i);
if (!tile || !tile->header || !tile->dataSize) continue;
NavMeshTileHeader tileHeader;
tileHeader.tileRef = mesh->getTileRef(tile);
tileHeader.dataSize = tile->dataSize;
tile->header->x = tileTempStartX + TempCountX;
tile->header->y = tileTempStartY + TempCountY;
myfile<<"LogId: "<< i << "TileX: "<<tile->header->x<<" TileY: "<<tile->header->y<<" CounterX: "<<TempCountX<<" CounterY: "<<TempCountY<<"\n";
if(TempCountY == size -1)
{
TempCountX += 1;
TempCountY = 0;
}
if(iB == size -1)
{
TempCountY = 0;
iB = 0;
}
else
{
TempCountY += 1;
iB += 1;
}
fwrite(&tileHeader, sizeof(tileHeader), 1, fp);
fwrite(tile->data, tile->dataSize, 1, fp);
}
fclose(fp);
myfile.close();
}
But it still don't work o.O