public void FromGlbTest(string[] modelPath, ModelTester.IModelTester tester) { var path = modelPath.Aggregate("SampleModels", (b, p) => Path.Combine(b, p)); using (var fs = new FileStream(path, FileMode.Open)) { var c = GltfContainer.FromGlb(fs); var schema = VJson.Schema.JsonSchemaAttribute.CreateFromClass <Types.Gltf>(); var ex = schema.Validate(c.Gltf); Assert.Null(ex); var loader = new ResourceLoaderFromEmbedOnly(); // Glb files should be packed. var store = new ResourcesStore(c.Gltf, c.Buffer, loader); tester.TestModel(store); } }
public void ReadWriteTest(string[] modelPath) { var path = modelPath.Aggregate("SampleModels", (b, p) => Path.Combine(b, p)); Glb.Header header0; Glb.Chunk c0Json; Glb.Chunk c0Buffer; using (var fs = new FileStream(path, FileMode.Open)) using (var r0 = new Glb.Reader(fs)) { header0 = r0.ReadHeader(); c0Json = r0.ReadChunk(); c0Buffer = r0.ReadChunk(); } // re-export glb byte[] output; using (var fs = new FileStream(path, FileMode.Open)) { var c = GltfContainer.FromGlb(fs); using (var ms = new MemoryStream()) { GltfContainer.ToGlb(ms, c); output = ms.ToArray(); } } using (var ms = new MemoryStream(output)) using (var r1 = new Glb.Reader(ms)) { var header1 = r1.ReadHeader(); Assert.AreEqual(header0.Magic, header1.Magic); Assert.AreEqual(header0.Version, header1.Version); // Assert.AreEqual(header0.Length, header1.Length); var c1Json = r1.ReadChunk(); // Assert.AreEqual(c0Json.ChunkLength, c1Json.ChunkLength); Assert.AreEqual(c0Json.ChunkType, c1Json.ChunkType); var c1Buffer = r1.ReadChunk(); Assert.AreEqual(c0Buffer.ChunkLength, c1Buffer.ChunkLength); Assert.AreEqual(c0Buffer.ChunkType, c1Buffer.ChunkType); } }