public override void Serialize(string path, TiledNavMesh mesh)
using (var binaryWriter = new BinaryWriter(new FileStream(path, FileMode.Create, FileAccess.Write)))
binaryWriter.Write((float)mesh.Origin.X);
binaryWriter.Write((float)mesh.Origin.Y);
binaryWriter.Write((float)mesh.Origin.Z);
binaryWriter.Write((float)mesh.TileWidth);
binaryWriter.Write((float)mesh.TileHeight);
binaryWriter.Write((float)mesh.MaxTiles);
binaryWriter.Write((float)mesh.MaxPolys);
binaryWriter.Write((int)mesh.Tiles.Count);
foreach (var tile in mesh.Tiles)
var id = mesh.GetTileRef(tile);
binaryWriter.Write((int)id.Id);
binaryWriter.Write((int)tile.Location.X);
binaryWriter.Write((int)tile.Location.Y);
binaryWriter.Write((int)tile.Layer);
binaryWriter.Write((int)tile.Salt);
binaryWriter.Write((float)tile.Bounds.Min.X);
binaryWriter.Write((float)tile.Bounds.Min.Y);
binaryWriter.Write((float)tile.Bounds.Min.Z);
binaryWriter.Write((float)tile.Bounds.Max.X);
binaryWriter.Write((float)tile.Bounds.Max.Y);
binaryWriter.Write((float)tile.Bounds.Max.Z);
foreach (var poly in tile.Polys)
binaryWriter.Write((byte)poly.PolyType);