Example #1
0
        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);
        }
Example #2
0
        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());
                    }
                }
            }
        }