public override TiledNavMesh Deserialize(string path) { JObject root = JObject.Parse(File.ReadAllText(path)); if (root["meta"]["version"]["snj"].ToObject <int>() != FormatVersion) { throw new ArgumentException("The version of the file does not match the version of the parser. Consider using an older version of SharpNav or re-generating your .snj meshes."); } Vector3 origin = root["origin"].ToObject <Vector3>(serializer); float tileWidth = root["tileWidth"].ToObject <float>(serializer); float tileHeight = root["tileHeight"].ToObject <float>(serializer); int maxTiles = root["maxTiles"].ToObject <int>(serializer); int maxPolys = root["maxPolys"].ToObject <int>(serializer); var mesh = new TiledNavMesh(origin, tileWidth, tileHeight, maxTiles, maxPolys); JArray tilesToken = (JArray)root["tiles"]; List <MeshTile> tiles = new List <MeshTile>(); foreach (JToken tileToken in tilesToken) { PolyId tileRef; MeshTile tile = DeserializeMeshTile(tileToken, mesh.IdManager, out tileRef); mesh.AddTileAt(tile, tileRef); } return(mesh); }
//!!!!betauser public TiledNavMesh Deserialize(MemoryStream memoryStream) { using (var binaryReader = new BinaryReader(memoryStream, System.Text.Encoding.Default, true)) { var x = binaryReader.ReadSingle(); var y = binaryReader.ReadSingle(); var z = binaryReader.ReadSingle(); var origin = new Vector3(x, y, z); var tileWidth = binaryReader.ReadSingle(); var tileHeight = binaryReader.ReadSingle(); var maxTiles = (int)binaryReader.ReadSingle(); var maxPolys = (int)binaryReader.ReadSingle(); var tiledNavMesh = new TiledNavMesh(origin, tileWidth, tileHeight, maxTiles, maxPolys); var navTileCount = binaryReader.ReadInt32(); for (var i = 0; i < navTileCount; i++) { NavPolyId baseRef; var stream = binaryReader.BaseStream; var tile = DeserializeMeshTile(ref stream, tiledNavMesh.IdManager, out baseRef); tiledNavMesh.AddTileAt(tile, baseRef); } return(tiledNavMesh); } }
public override TiledNavMesh Deserialize(string path) { using (var binaryReader = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read))) { byte[] magic = binaryReader.ReadBytes(4); if (!magic.SequenceEqual(Magic)) { throw new InvalidDataException("Invalid file magic!"); } int version = binaryReader.ReadInt32(); if (version != FormatVersion) { throw new InvalidDataException("Invalid file version!"); } var x = binaryReader.ReadSingle(); var y = binaryReader.ReadSingle(); var z = binaryReader.ReadSingle(); var origin = new Vector3(x, y, z); var tileWidth = binaryReader.ReadSingle(); var tileHeight = binaryReader.ReadSingle(); var maxTiles = (int)binaryReader.ReadSingle(); var maxPolys = (int)binaryReader.ReadSingle(); var tiledNavMesh = new TiledNavMesh(origin, tileWidth, tileHeight, maxTiles, maxPolys); var navTileCount = binaryReader.ReadInt32(); for (var i = 0; i < navTileCount; i++) { NavPolyId baseRef; var stream = binaryReader.BaseStream; var tile = DeserializeMeshTile(ref stream, tiledNavMesh.IdManager, out baseRef); tiledNavMesh.AddTileAt(tile, baseRef); } return(tiledNavMesh); } }
public override TiledNavMesh Deserialize(string path) { JObject root = JObject.Parse(File.ReadAllText(path)); if (root["meta"]["version"]["snj"].ToObject<int>() != FormatVersion) throw new ArgumentException("The version of the file does not match the version of the parser. Consider using an older version of SharpNav or re-generating your .snj meshes."); Vector3 origin = root["origin"].ToObject<Vector3>(serializer); float tileWidth = root["tileWidth"].ToObject<float>(serializer); float tileHeight = root["tileHeight"].ToObject<float>(serializer); int maxTiles = root["maxTiles"].ToObject<int>(serializer); int maxPolys = root["maxPolys"].ToObject<int>(serializer); var mesh = new TiledNavMesh(origin, tileWidth, tileHeight, maxTiles, maxPolys); JArray tilesToken = (JArray) root["tiles"]; List<NavTile> tiles = new List<NavTile>(); foreach (JToken tileToken in tilesToken) { NavPolyId tileRef; NavTile tile = DeserializeMeshTile(tileToken, mesh.IdManager, out tileRef); mesh.AddTileAt(tile, tileRef); } return mesh; }