HaloMap.RawData.RawDataContainer.SaveRawToFile C# (CSharp) Method

SaveRawToFile() public method

The save raw to file.
public SaveRawToFile ( string outputFilePath, Meta meta ) : void
outputFilePath string The output file path.
meta Meta The meta.
return void
        public void SaveRawToFile(string outputFilePath, Meta.Meta meta)
        {
            int x = outputFilePath.LastIndexOf('.');
            string temp = outputFilePath.Substring(0, x + 1) + meta.type + "raw";

            if (meta.type == "snd!" &&
                (meta.Map.HaloVersion == HaloVersionEnum.Halo2 ||
                 meta.Map.HaloVersion == HaloVersionEnum.Halo2Vista))
            {
                Stream s = File.Open(temp + "layout", FileMode.Create);
                BinaryFormatter b = new BinaryFormatter();
                Sound temps = (Sound)meta.raw;
                b.Serialize(s, temps.Permutations);
                s.Flush();
                s.Close();
            }

            XmlTextWriter xtw = new XmlTextWriter(temp + ".xml", Encoding.Default);
            xtw.Formatting = Formatting.Indented;
            xtw.WriteStartElement("RawData");
            xtw.WriteAttributeString("TagType", meta.type);
            xtw.WriteAttributeString("TagName", meta.name);
            xtw.WriteAttributeString("RawType", meta.raw.containerType.ToString());
            xtw.WriteAttributeString("RawChunkCount", this.rawChunks.Count.ToString());
            xtw.WriteAttributeString("Date", DateTime.Today.ToShortDateString());
            xtw.WriteAttributeString("Time", DateTime.Now.ToShortTimeString());
            xtw.WriteAttributeString("EntityVersion", "0.1");

            BinaryWriter BW = new BinaryWriter(new FileStream(temp, FileMode.Create));
            int loc = 0;
            for (x = 0; x < this.rawChunks.Count; x++)
            {
                RawDataChunk r = this.rawChunks[x];
                if (r.offset == -1)
                {
                    continue;
                }

                xtw.WriteStartElement("RawChunk");
                xtw.WriteAttributeString("RawDataType", r.rawDataType.ToString());
                xtw.WriteAttributeString("PointerMetaOffset", r.pointerMetaOffset.ToString());
                xtw.WriteAttributeString("ChunkSize", r.size.ToString());
                xtw.WriteAttributeString("RawDataOffset", loc.ToString());
                xtw.WriteAttributeString("PointsToOffset", r.offset.ToString());
                xtw.WriteAttributeString("RawLocation", r.rawLocation.ToString());
                xtw.WriteEndElement();
                BW.BaseStream.Write(r.MS.ToArray(), 0, r.size);
                loc += r.size;
            }

            BW.Flush();
            BW.Close();
            xtw.WriteEndElement();
            xtw.Flush();
            xtw.Close();
        }