Exemple #1
0
        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);
        }
Exemple #2
0
        //!!!!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;
        }