public List <Bar.Entry> GetBarEntries(Action <string, MemoryStream> trySaveTo = null) { var entries = new List <Bar.Entry>(); { var mapBin = new MemoryStream(); Mdlx.CreateFromMapModel(mapModel).Write(mapBin); mapBin.Position = 0; entries.Add( new Bar.Entry { Name = config.bar?.model?.name ?? "MAP", Type = Bar.EntryType.Model, Stream = mapBin, } ); trySaveTo?.Invoke(config.bar?.model?.toFile, mapBin); } { var texBin = new MemoryStream(); modelTex.Write(texBin); texBin.Position = 0; entries.Add( new Bar.Entry { Name = config.bar?.texture?.name ?? "MAP", Type = Bar.EntryType.ModelTexture, Stream = texBin, } ); trySaveTo?.Invoke(config.bar?.texture?.toFile, texBin); } { var doctBin = new MemoryStream(); collisionBuilder.doct.Write(doctBin); doctBin.Position = 0; entries.Add( new Bar.Entry { Name = config.bar?.doct?.name ?? "eh_1", Type = Bar.EntryType.MeshOcclusion, Stream = doctBin, } ); trySaveTo?.Invoke(config.bar?.doct?.toFile, doctBin); } { var coctBin = new MemoryStream(); collisionBuilder.coct.Write(coctBin); coctBin.Position = 0; entries.Add( new Bar.Entry { Name = config.bar?.coct?.name ?? "ID_e", Type = Bar.EntryType.MapCollision, Stream = coctBin, } ); trySaveTo?.Invoke(config.bar?.coct?.toFile, coctBin); } return(entries); }
public void CreateAndRead(string baseName) { var image = File.OpenRead($"kh2/res/image-{baseName}.imd").Using(s => Imgd.Read(s)); { var outStream = new MemoryStream(); { var textures = new ModelTexture(new Imgd[] { image }); textures.Write(outStream); } { outStream.Position = 0; var textures = ModelTexture.Read(outStream); Assert.Single(textures.Images); var converted = textures.Images.Single(); Assert.Equal(image.PixelFormat, converted.PixelFormat); Assert.Equal(image.Size, converted.Size); Assert.Equal(image.GetClut(), converted.GetClut()); Assert.Equal(image.GetData(), converted.GetData()); } } { var outStream = new MemoryStream(); { var textures = new ModelTexture(new Imgd[] { image, image }); textures.Write(outStream); } { outStream.Position = 0; var textures = ModelTexture.Read(outStream); Assert.Equal(2, textures.Images.Count); foreach (var converted in textures.Images) { Assert.Equal(image.PixelFormat, converted.PixelFormat); Assert.Equal(image.Size, converted.Size); Assert.Equal(image.GetClut(), converted.GetClut()); Assert.Equal(image.GetData(), converted.GetData()); } } } { var outStream = new MemoryStream(); { var textures = new ModelTexture(new Imgd[] { image, image, image, image }); textures.Write(outStream); } { outStream.Position = 0; var textures = ModelTexture.Read(outStream); Assert.Equal(4, textures.Images.Count); foreach (var converted in textures.Images) { Assert.Equal(image.PixelFormat, converted.PixelFormat); Assert.Equal(image.Size, converted.Size); Assert.Equal(image.GetClut(), converted.GetClut()); Assert.Equal(image.GetData(), converted.GetData()); } } } }