示例#1
0
        private void SaveMaterialToFile(string fileName)
        {
            FileOutput m = new FileOutput();
            FileOutput s = new FileOutput();

            int[] c = NUD.WriteMaterial(m, currentMaterialList, s);

            FileOutput fin = new FileOutput();

            fin.writeInt(0);

            fin.writeInt(20 + c[0]);
            for (int i = 1; i < 4; i++)
            {
                fin.writeInt(c[i] == c[i - 1] ? 0 : 20 + c[i]);
            }

            for (int i = 0; i < 4 - c.Length; i++)
            {
                fin.writeInt(0);
            }

            fin.writeOutput(m);
            fin.align(32, 0xFF);
            fin.writeIntAt(fin.size(), 0);
            fin.writeOutput(s);
            fin.save(fileName);
        }
示例#2
0
文件: LM.cs 项目: nnn1590/Smash-Forge
 public void Write(FileOutput o)
 {
     o.writeInt((int)TagType.DoAction);
     o.writeInt(2);
     o.writeInt(ActionId);
     o.writeInt(Unk1);
 }
示例#3
0
        public override byte[] Rebuild()
        {
            FileOutput f = new FileOutput();

            f.Endian = Endian;
            f.writeUInt(0x0000FEFF);
            f.Endian = Endianness.Big;
            f.writeUInt(Magic);

            f.Endian = Endian;
            f.writeInt(0); // Always 0
            f.writeInt(Frames.Count);
            for (int i = 0; i < Frames.Count; i++)
            {
                f.writeFloat(Frames[i].qx);
                f.writeFloat(Frames[i].qy);
                f.writeFloat(Frames[i].qz);
                f.writeFloat(Frames[i].qw);
                f.writeFloat(Frames[i].x);
                f.writeFloat(Frames[i].y);
                f.writeFloat(Frames[i].z);
            }

            return(f.getBytes());
        }
示例#4
0
文件: LM.cs 项目: nnn1590/Smash-Forge
                public void Write(FileOutput o)
                {
                    o.writeInt((int)TagType.PlaceObject);
                    o.writeInt(12);

                    o.writeInt(CharacterId);
                    o.writeInt(PlacementId);
                    o.writeInt(Unk1);
                    o.writeInt(NameId);
                    o.writeShort((short)Flags);
                    o.writeShort((short)BlendMode);
                    o.writeShort(Depth);
                    o.writeShort(Unk4);
                    o.writeShort(Unk5);
                    o.writeShort(Unk6);
                    o.writeShort((short)PositionFlags);
                    o.writeShort(PositionId);
                    o.writeInt(ColorMultId);
                    o.writeInt(ColorAddId);

                    o.writeInt((ColorMatrix != null) ? 1 : 0);
                    o.writeInt((UnkF014 != null) ? 1 : 0);

                    if (ColorMatrix != null)
                    {
                        ColorMatrix.Write(o);
                    }

                    if (UnkF014 != null)
                    {
                        UnkF014.Write(o);
                    }
                }
示例#5
0
文件: LM.cs 项目: nnn1590/Smash-Forge
            public void Write(FileOutput o)
            {
                Console.WriteLine($"Properties {{ // offset=0x{o.size():X2}");
                Console.WriteLine($"\tunk0: 0x{unk0:X8}");
                Console.WriteLine($"\tunk1: 0x{unk1:X8}");
                Console.WriteLine($"\tunk2: 0x{unk2:X8}");
                Console.WriteLine($"\tmaxCharacterId: 0x{maxCharacterId:X8}");
                Console.WriteLine($"\tunk4: 0x{unk4:X8}");
                Console.WriteLine($"\tmaxCharacterId2: 0x{maxCharacterId2:X2}");
                Console.WriteLine($"\tmaxDepth: 0x{maxDepth:X4}");
                Console.WriteLine($"\tunk7: 0x{unk7:X4}");
                Console.WriteLine($"\tframerate: {framerate}");
                Console.WriteLine($"\tdimensions: {width}x{height}");
                Console.WriteLine($"\tunk8: 0x{unk8:X8}");
                Console.WriteLine($"\tunk9: 0x{unk9:X8}");
                Console.WriteLine("}\n");

                o.writeInt((int)TagType.Properties);
                o.writeInt(12);

                o.writeInt((int)unk0);
                o.writeInt((int)unk1);
                o.writeInt((int)unk2);
                o.writeInt((int)maxCharacterId);
                o.writeInt(unk4);
                o.writeInt((int)maxCharacterId2);
                o.writeShort((short)maxDepth);
                o.writeShort((short)unk7);
                o.writeFloat(framerate);
                o.writeFloat(width);
                o.writeFloat(height);
                o.writeInt((int)unk8);
                o.writeInt((int)unk9);
            }
示例#6
0
            public int Rebuild(FileOutput o)
            {
                o.writeString("DTON");
                int sizeoff = o.size();

                o.writeInt(0);
                int size = o.size();

                o.writeInt(destone.Count);

                FileOutput dat = new FileOutput();

                dat.Endian = Endianness.Little;

                int start = destone.Count * 8 + 4;

                for (int i = 0; i < destone.Count; i++)
                {
                    o.writeInt(start + dat.size());
                    o.writeInt(destone[i].Rebuild(dat) + 4);

                    if (i != destone.Count - 1)
                    {
                        dat.writeInt(0);
                    }
                }

                o.writeInt(0);
                o.writeOutput(dat);

                size = o.size() - size;
                o.writeIntAt(size, sizeoff);
                return(size);
            }
示例#7
0
        public void ExportTEX(string filename)
        {
            FileOutput o = new FileOutput();

            o.Endian = Endianness.Little;

            o.writeInt(pictureBox1.Image.Width);
            o.writeInt(pictureBox1.Image.Height);
            o.writeByte(formatSelector.SelectedIndex);
            o.writeByte(1);
            o.writeShort(0);
            o.writeString(nameBox.Text);
            for (int i = 0; i < 0x74 - nameBox.Text.Length; i++)
            {
                o.writeByte(0);
            }

            pictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipY);

            o.writeBytes(_3DS.EncodeImage(new Bitmap(pictureBox1.Image), (_3DS.Tex_Formats)formatSelector.SelectedIndex));

            pictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipY);

            o.save(filename);
        }
示例#8
0
文件: LM.cs 项目: nnn1590/Smash-Forge
        void writeTransforms(FileOutput o)
        {
            Console.WriteLine($"Transforms = [ // offset=0x{o.size():X2}");

            o.writeInt((int)TagType.Transforms);
            o.writeInt(Transforms.Count * 6 + 1);
            o.writeInt(Transforms.Count);

            for (int i = 0; i < Transforms.Count; i++)
            {
                var transform = Transforms[i];

                Console.WriteLine($"\t[{transform.M11:f2}, {transform.M21:f2}] // offset=0x{o.size():X2}");
                Console.WriteLine($"\t[{transform.M12:f2}, {transform.M22:f2}]");
                Console.WriteLine($"\t[{transform.M41:f2}, {transform.M42:f2}]\n");
                o.writeFloat(transform.M11);
                o.writeFloat(transform.M21);
                o.writeFloat(transform.M12);
                o.writeFloat(transform.M22);
                o.writeFloat(transform.M41);
                o.writeFloat(transform.M42);
            }

            Console.WriteLine("]\n");
        }
示例#9
0
文件: LM.cs 项目: nnn1590/Smash-Forge
        } // Read()

        #region serialization
        void writeSymbols(FileOutput o)
        {
            FileOutput tag = new FileOutput();

            tag.writeInt(Strings.Count);

            Console.WriteLine($"Strings = [ // offset=0x{o.size():X2}");
            for (int i = 0; i < Strings.Count; i++)
            {
                var str = Strings[i];

                Console.WriteLine($"\t0x{i:X3}: \"{str}\"");

                var strBytes = Encoding.UTF8.GetBytes(str);
                tag.writeInt(strBytes.Length);
                tag.writeBytes(strBytes);

                int padSize = 4 - (tag.size() % 4);
                for (int j = 0; j < padSize; j++)
                {
                    tag.writeByte(0);
                }
            }
            Console.WriteLine("]\n");

            o.writeInt((int)TagType.Symbols);
            o.writeInt(tag.size() / 4);
            o.writeOutput(tag);
        }
示例#10
0
            public int Rebuild(FileOutput o)
            {
                o.writeString("TONE");
                int sizeoff = o.size();

                o.writeInt(0);
                int size = o.size();

                o.writeInt(tones.Count);

                FileOutput dat = new FileOutput();

                dat.Endian = Endianness.Little;

                int start = tones.Count * 8 + 4;

                for (int i = 0; i < tones.Count; i++)
                {
                    o.writeInt(start + dat.size());
                    o.writeInt(tones[i].Rebuild(dat));
                }

                o.writeInt(0);
                o.writeOutput(dat);

                size = o.size() - size - 4;
                o.writeIntAt(size, sizeoff);
                return(size);
            }
示例#11
0
        public void save(FileOutput f)
        {
            f.writeHex(magic);

            f.writeByte(1);
            f.writeString(name.PadRight(0x38, (char)0));

            f.writeByte(1);
            f.writeString(subname.PadRight(0x40, (char)0));

            f.writeByte(1);
            for (int i = 0; i < 3; i++)
            {
                f.writeFloat(startPos[i]);
            }
            f.writeFlag(useStartPos);

            f.writeByte(1);
            f.writeInt(unk1);

            f.writeByte(1);
            foreach (float i in unk2)
            {
                f.writeFloat(i);
            }
            f.writeInt(unk3);

            f.writeByte(1);
            f.writeChars(boneName);
        }
示例#12
0
文件: LM.cs 项目: nnn1590/Smash-Forge
 public void Write(FileOutput o)
 {
     o.writeInt((int)TagType.RemoveObject);
     o.writeInt(2);
     o.writeInt(Unk1);
     o.writeShort(Depth);
     o.writeShort(Unk2);
 }
示例#13
0
文件: LM.cs 项目: nnn1590/Smash-Forge
            public void Write(FileOutput o)
            {
                Console.WriteLine($"unk_{(int)Type:X4} (size=0x{Size * 4:X4}) // offset=0x{o.size():X2}\n");

                o.writeInt((int)Type);
                o.writeInt(Size);
                o.writeBytes(Data);
            }
示例#14
0
文件: LM.cs 项目: nnn1590/Smash-Forge
 public void Write(FileOutput o)
 {
     o.writeInt((int)TagType.FrameLabel);
     o.writeInt(3);
     o.writeInt(NameId);
     o.writeInt(StartFrame);
     o.writeInt(Unk1);
 }
示例#15
0
        public override byte[] Rebuild()
        {
            FileOutput buf = new FileOutput();

            buf.Endian = Endianness.Little;

            var flagsOffset   = 0x10;
            var entriesOffset = flagsOffset + (atlases.Count * 4);
            var stringsOffset = entriesOffset + (textures.Count * 0x20);

            buf.writeInt(0x544C5354); // TLST
            buf.writeShort(0);        // idk
            buf.writeShort((short)atlases.Count);
            buf.writeShort((short)textures.Count);
            buf.writeShort((short)flagsOffset);
            buf.writeShort((short)entriesOffset);
            buf.writeShort((short)stringsOffset);

            // flags
            foreach (var flag in atlases)
            {
                buf.writeInt((int)flag);
            }

            // entries
            int namePtr = 0;

            foreach (var texture in textures)
            {
                buf.writeInt(namePtr);
                buf.writeInt(namePtr);
                namePtr += texture.name.Length + 1;

                buf.writeFloat(texture.topLeft.X);
                buf.writeFloat(texture.topLeft.Y);
                buf.writeFloat(texture.botRight.X);
                buf.writeFloat(texture.botRight.Y);

                buf.writeShort(texture.width);
                buf.writeShort(texture.height);
                buf.writeShort(texture.atlasId);
                buf.writeShort(0); // pad
            }

            //strings
            foreach (var texture in textures)
            {
                buf.writeString(texture.name);
                buf.writeByte(0);
            }

            buf.writeByte(0);

            return(buf.getBytes());
        }
示例#16
0
 private void injectRom(object sender, EventArgs e)
 {
     using (OpenFileDialog ofd = new OpenFileDialog())
     {
         ofd.Title = "Select NES ROM";
         if (ofd.ShowDialog() == DialogResult.OK)
         {
             using (SaveFileDialog sfd = new SaveFileDialog())
             {
                 sfd.Title = "Select Save Location";
                 if (sfd.ShowDialog() == DialogResult.OK)
                 {
                     byte[]     rom = File.ReadAllBytes(ofd.FileName);
                     FileOutput f   = new FileOutput();
                     f.Endian = Endianness.Little;
                     f.writeInt(0);
                     f.writeInt(0x30 + rom.Length);
                     f.writeInt(0x30);
                     f.writeInt(0x20 + rom.Length);
                     f.writeInt(0x30 + rom.Length);
                     f.writeInt(0);
                     f.writeInt(0x1B + rom.Length);
                     f.writeInt(0x1B + rom.Length);
                     f.writeString("JAM WAS HERE");
                     f.writeInt(0);
                     f.writeBytes(rom);
                     f.save(sfd.FileName);
                 }
             }
         }
     }
 }
示例#17
0
            public void WriteDescription(FileOutput f)
            {
                // TODO: Calculate Length
                f.writeInt(type.Length);

                for (int i = 0; i < type.Length; i++)
                {
                    f.writeInt(type[i]);
                    f.writeInt(format[i]);
                    f.writeFloat(scale[i]);
                }
            }
示例#18
0
        public void save(FileOutput f)
        {
            f.writeHex("0103");

            f.writeInt(type);
            f.writeFloat(x);
            f.writeFloat(y);
            f.writeFloat(z);
            f.writeFloat(unk);

            f.writeHex("0101");
            f.writeInt(0);
        }
示例#19
0
        public override byte[] Rebuild()
        {
            FileOutput o = new FileOutput();

            o.Endian = Endianness.Little;

            FileOutput d = new FileOutput();

            d.Endian = Endianness.Little;

            o.writeString("NUS3");
            o.writeInt(0);

            o.writeString("BANKTOC ");
            o.writeInt(0x3C);
            o.writeInt(0x07);

            // write each section
            o.writeString("PROP");
            o.writeInt(prop.Rebuild(d));

            o.writeString("BINF");
            o.writeInt(binf.Rebuild(d));

            o.writeString("GRP ");
            o.writeInt(grp.Rebuild(d));

            o.writeString("DTON");
            o.writeInt(dton.Rebuild(d));

            o.writeString("TONE");
            o.writeInt(tone.Rebuild(d));

            o.writeString("JUNK");
            o.writeInt(4);
            //d.writeString("JUNK");
            d.writeInt(4);
            d.writeInt(0);

            o.writeString("PACK");
            o.writeInt(0);

            o.writeOutput(d);

            o.writeIntAt(o.size(), 4);

            // something extra with bgm??

            return(o.getBytes());
        }
示例#20
0
        public static byte[] FromIDSP(byte[] idsp)
        {
            File.WriteAllBytes("temp.idsp", idsp);
            IntPtr vgm = VGMStreamNative.InitVGMStream("temp.idsp");

            if (vgm == IntPtr.Zero)
            {
                throw new Exception("Error loading idsp");
            }

            int channelCount = VGMStreamNative.GetVGMStreamChannelCount(vgm);
            int bitsPerFrame = VGMStreamNative.GetVGMStreamFrameSize(vgm);
            int size         = VGMStreamNative.GetVGMStreamTotalSamples(vgm);
            int samplerate   = VGMStreamNative.GetVGMStreamSampleRate(vgm);

            int total = (int)((samplerate * bitsPerFrame * channelCount * (size / 24576000f)) / 8 * 1024);

            short[] buffer = new short[total];
            VGMStreamNative.RenderVGMStream(buffer, buffer.Length / 2, vgm);

            FileOutput o = new FileOutput();

            o.Endian = Endianness.Little;

            o.writeString("RIFF");
            o.writeInt(0);
            o.writeString("WAVEfmt ");

            o.writeInt(0x10);
            o.writeShort(1);
            o.writeShort(channelCount);
            o.writeInt(samplerate);
            o.writeInt(size);
            o.writeShort(2);
            o.writeShort(0x10);

            o.writeString("data");
            o.writeInt(buffer.Length);

            for (int i = 0; i < buffer.Length / 2; i++)
            {
                o.writeShort(buffer[i]);
            }

            o.writeIntAt(o.size() - 8, 4);

            VGMStreamNative.CloseVGMStream(vgm);
            File.Delete("temp.idsp");
            return(o.getBytes());
        }
示例#21
0
文件: LVD.cs 项目: struz/Smash-Forge
 public void save(FileOutput f)
 {
     f.writeHex("030401017735BB750000000201");
     f.writeString(name.PadRight(0x38, (char)0));
     f.writeByte(1);
     f.writeString(subname.PadRight(0x40, (char)0));
     f.writeByte(1);
     foreach (float i in startPos)
     {
         f.writeFloat(i);
     }
     f.writeFlag(useStartPos);
     f.writeByte(1);
     f.writeInt(unk2);
     f.writeByte(1);
     f.writeBytes(unk3);
     f.writeHex("FFFFFFFF01");
     f.writeChars(unk4);
     f.writeFlag(flag1);
     f.writeFlag(flag2);
     f.writeFlag(flag3);
     f.writeFlag(flag4);
     f.writeByte(1);
     f.writeInt(verts.Count);
     foreach (Vector2D v in verts)
     {
         f.writeByte(1);
         f.writeFloat(v.x);
         f.writeFloat(v.y);
     }
     f.writeByte(1);
     f.writeInt(normals.Count);
     foreach (Vector2D n in normals)
     {
         f.writeByte(1);
         f.writeFloat(n.x);
         f.writeFloat(n.y);
     }
     f.writeByte(1);
     f.writeInt(0);
     f.writeByte(1);
     f.writeInt(materials.Count);
     foreach (CollisionMat m in materials)
     {
         f.writeByte(1);
         f.writeBytes(m.material);
     }
 }
示例#22
0
        public void save(FileOutput f)
        {
            base.save(f);

            f.writeByte(1);
            f.writeInt(0);
        }
示例#23
0
        public void save(FileOutput f)
        {
            base.save(f);

            f.writeByte(1);
            f.writeInt(type);

            f.writeFloat(x);
            f.writeFloat(y);
            f.writeFloat(z);
            if (type == 2)
            {
                f.writeFloat(radius);
                f.writeFloat(dx);
                f.writeFloat(dy);
                f.writeFloat(dz);
            }
            else if (type == 3)
            {
                f.writeFloat(dx);
                f.writeFloat(dy);
                f.writeFloat(dz);
                f.writeFloat(radius);
            }
            f.writeFloat(unk);
            f.writeHex("00");
        }
示例#24
0
文件: LM.cs 项目: nnn1590/Smash-Forge
        void writePositions(FileOutput o)
        {
            Console.WriteLine($"Positions = [ // offset=0x{o.size():X2}");

            o.writeInt((int)TagType.Positions);
            o.writeInt(Positions.Count * 2 + 1);
            o.writeInt(Positions.Count);

            for (int i = 0; i < Positions.Count; i++)
            {
                var position = Positions[i];
                Console.WriteLine($"\t0x{i:X4}: [{position.X}, {position.Y}] // offset=0x{o.size():X2}");
                o.writeFloat(position.X);
                o.writeFloat(position.Y);
            }
            Console.WriteLine("]\n");
        }
示例#25
0
文件: LVD.cs 项目: struz/Smash-Forge
 public override void save(FileOutput f)
 {
     f.writeHex("010401017735BB750000000201");
     f.writeChars(name.PadRight(0x38).ToCharArray());
     f.writeByte(1);
     f.writeChars(subname.PadRight(0x40).ToCharArray());
     f.writeHex("0100000000000000000000000000010000000001000000000000000000000000FFFFFFFF010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001014C800203");
     f.writeInt(type);
     f.writeHex("000000000000000000000000000000000101");
     f.writeInt(points.Count);
     foreach (Vector2D point in points)
     {
         f.writeByte(1);
         f.writeFloat(point.x);
         f.writeFloat(point.y);
     }
 }
示例#26
0
            public int Rebuild(FileOutput o)
            {
                o.writeString("GRP ");
                int sizeoff = o.size();

                o.writeInt(0);
                int size = o.size();

                o.writeInt(names.Count);

                int        start = names.Count * 8 + 4;
                FileOutput name  = new FileOutput();

                name.Endian = Endianness.Little;

                int c = 0;

                foreach (string na in names)
                {
                    o.writeInt(start + name.size());

                    int ns = name.pos();
                    name.writeInt(1);
                    name.writeByte(na.Length == 0 ? 0xFF : na.Length + 1);
                    name.writeString(na);
                    name.writeByte(0);
                    name.align(4);
                    if (c != names.Count - 1)
                    {
                        name.writeInt(0); // padding
                    }
                    else
                    {
                        ns -= 4;
                    }
                    c++;

                    o.writeInt(name.pos() - ns);
                }
                o.writeInt(0);
                o.writeOutput(name);

                size = o.size() - size;
                o.writeIntAt(size, sizeoff);
                return(size);
            }
示例#27
0
        public static void WriteKeyData(Animation.KeyGroup group, FileOutput boneHeader, FileOutput keyData, FileOutput d_Main3, int start, ref int track)
        {
            if (group.Keys.Count == 1)
            {
                boneHeader.writeFloat(group.Keys[0].Value);
            }
            else
            if (group.Keys.Count == 0)
            {
                boneHeader.writeInt(0);
            }
            else
            {
                int off = (group.Keys.Count * 4);
                boneHeader.WriteOffset(start + keyData.size(), d_Main3); // bone offset

                keyData.writeFloat(0);
                keyData.writeFloat(group.FrameCount);
                keyData.writeInt(track++ << 16);                     // track
                keyData.writeInt((group.Keys.Count << 16) | 0x0701); // 7 is quantinization and 1 is linear interpolation

                float minv = 999, maxv = -999;
                float minf = 999, maxf = -999;
                foreach (Animation.KeyFrame key in group.Keys)
                {
                    minv = Math.Min(key.Value, minv);
                    maxv = Math.Max(key.Value, maxv);
                    minf = Math.Min(key.Frame, minf);
                    maxf = Math.Max(key.Frame, maxf);
                }
                maxv -= minv;
                keyData.writeFloat(maxv / 0xFFFFF);                       // value scale
                keyData.writeFloat(minv);                                 // value offset
                keyData.writeFloat(1f);                                   // frame scale
                keyData.writeFloat(minf);                                 // frame offset

                keyData.WriteOffset(start + keyData.size() + 4, d_Main3); // useless flags

                foreach (Animation.KeyFrame key in group.Keys)
                {
                    keyData.writeInt((((int)(((key.Value - minv) / (maxv)) * 0xFFFFF)) << 12) | (((int)(key.Frame - minf)) & 0xFFF));
                }
            }
            //------
        }
示例#28
0
        //Saving Mat
        private void savePresetButton_Click(object sender, EventArgs e)
        {
            using (var sfd = new SaveFileDialog())
            {
                sfd.Filter = "Namco Material (NMT)|*.nmt|" +
                             "All files(*.*)|*.*";

                sfd.InitialDirectory = Path.Combine(MainForm.executableDir, "materials\\");
                Console.WriteLine(sfd.InitialDirectory);
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    sfd.FileName         = sfd.FileName;
                    sfd.RestoreDirectory = true;

                    if (sfd.FileName.EndsWith(".nmt"))
                    {
                        FileOutput m = new FileOutput();
                        FileOutput s = new FileOutput();

                        int[] c = NUD.WriteMaterial(m, currentMaterialList, s);

                        FileOutput fin = new FileOutput();

                        fin.writeInt(0);

                        fin.writeInt(20 + c[0]);
                        for (int i = 1; i < 4; i++)
                        {
                            fin.writeInt(c[i] == c[i - 1] ? 0 : 20 + c[i]);
                        }

                        for (int i = 0; i < 4 - c.Length; i++)
                        {
                            fin.writeInt(0);
                        }

                        fin.writeOutput(m);
                        fin.align(32, 0xFF);
                        fin.writeIntAt(fin.size(), 0);
                        fin.writeOutput(s);
                        fin.save(sfd.FileName);
                    }
                }
            }
        }
示例#29
0
文件: LM.cs 项目: nnn1590/Smash-Forge
        void writeColors(FileOutput o)
        {
            Console.WriteLine($"Colors = [ // offset=0x{o.size():X2}");

            o.writeInt((int)TagType.Colors);
            o.writeInt(Colors.Count * 2 + 1);
            o.writeInt(Colors.Count);

            for (int i = 0; i < Colors.Count; i++)
            {
                var color = Colors[i];
                Console.WriteLine($"\t0x{i:X3}: #{(byte)(color.X * 255):X2}{(byte)(color.Z * 255):X2}{(byte)(color.Y * 255):X2}, {(byte)(color.W * 255):X2} // offset=0x{o.size():X2}");
                o.writeShort((short)(color.X * 256));
                o.writeShort((short)(color.Y * 256));
                o.writeShort((short)(color.Z * 256));
                o.writeShort((short)(color.W * 256));
            }
            Console.WriteLine("]\n");
        }
示例#30
0
                public int Rebuild(FileOutput o)
                {
                    int size = o.size();

                    o.writeInt(hash);
                    o.writeInt(unk1);
                    o.writeByte(name.Length + 1);
                    o.writeString(name);
                    o.writeByte(0);
                    o.align(4);

                    // write data
                    foreach (float f in data)
                    {
                        o.writeFloat(f);
                    }

                    return(o.size() - size);
                }