示例#1
0
        public void MoveResource(MadScience.Wrappers.ResourceKey oldKey, MadScience.Wrappers.ResourceKey newKey)
        {
            if (this.Stream.CanWrite == false)
            {
                throw new NotSupportedException();
            }

            if (this._Entries.ContainsKey(oldKey) == false)
            {
                throw new KeyNotFoundException();
            }
            else if (this._Entries.ContainsKey(newKey) == true)
            {
                throw new ArgumentException("database already contains the new resource key", "newKey");
            }

            Entry entry = this._Entries[oldKey];

            if (entry is StreamEntry)
            {
                this.OriginalEntries[oldKey] = (StreamEntry)entry;
            }

            this._Entries.Remove(oldKey);
            this._Entries.Add(newKey, entry);
        }
        private void button6_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(textBox1.Text))
            {
                textBox1.Text = "key:00000000:00000000:0000000000000000";
            }
            if (MadScienceSmall.Helpers.validateKey(textBox1.Text))
            {
                MadScience.Wrappers.ResourceKey rKey = new MadScience.Wrappers.ResourceKey(textBox1.Text);
                MadScience.Wrappers.VPXYEntry entry = new MadScience.Wrappers.VPXYEntry();
                entry.type = 1;
                entry.tgiList.Add(rKey);

                vpxyFile.vpxy.seprEntries.Add(entry);

                ListViewItem item = new ListViewItem();
                item.Text = (listView3.Items.Count).ToString();
                item.SubItems.Add(rKey.ToString());
                listView3.Items.Add(item);
                item = null;

                entry = null;
                //rKey = null;
            }
        }
示例#3
0
        private void button6_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(textBox1.Text))
            {
                textBox1.Text = "key:00000000:00000000:0000000000000000";
            }
            if (MadScienceSmall.Helpers.validateKey(textBox1.Text))
            {
                MadScience.Wrappers.ResourceKey rKey  = new MadScience.Wrappers.ResourceKey(textBox1.Text);
                MadScience.Wrappers.VPXYEntry   entry = new MadScience.Wrappers.VPXYEntry();
                entry.type = 1;
                entry.tgiList.Add(rKey);

                vpxyFile.vpxy.seprEntries.Add(entry);


                ListViewItem item = new ListViewItem();
                item.Text = (listView3.Items.Count).ToString();
                item.SubItems.Add(rKey.ToString());
                listView3.Items.Add(item);
                item = null;

                entry = null;
                //rKey = null;
            }
        }
示例#4
0
        private void loadFromStream(Stream input)
        {
            BinaryReader reader = new BinaryReader(input);

            this.version         = reader.ReadUInt32();
            this.keytable.offset = reader.ReadUInt32();
            this.keytable.size   = reader.ReadUInt32();

            byte nameLength = reader.ReadByte();

            this.partName  = MadScience.StreamHelpers.ReadStringUTF16(input, false, (uint)nameLength);
            this.blendType = reader.ReadUInt32();

            this.blendTgi = new MadScience.Wrappers.ResourceKey(input, (int)MadScience.Wrappers.ResourceKeyOrder.TGI);

            uint geomCount = reader.ReadUInt32();

            for (int i = 0; i < geomCount; i++)
            {
                FacialBlendGeomBoneEntry geomBoneEntry = new FacialBlendGeomBoneEntry(input);
                this.geomBoneEntries.Add(geomBoneEntry);
                geomBoneEntry = null;
            }
            this.keytable.Load(input);

            reader = null;
        }
示例#5
0
        public static Stream findPattern(patternDetails pattern)
        {
            Wrappers.ResourceKey rKey = new MadScience.Wrappers.ResourceKey(0x00B2D882, 0x0, StringHelpers.HashFNV64(pattern.name));

            Stream patternThumb = KeyUtils.findKey(rKey);

            return(patternThumb);
        }
示例#6
0
        public static Stream findKey(MadScience.Wrappers.ResourceKey resourceKey, int fullBuildNum, Wrappers.Database db)
        {
            List <MadScience.Wrappers.ResourceKey> resourceKeys = new List <MadScience.Wrappers.ResourceKey>();

            resourceKeys.Add(resourceKey);

            return(findKey(resourceKeys, fullBuildNum, db)[0]);
        }
示例#7
0
        public void SetResourceStream(MadScience.Wrappers.ResourceKey key, Stream stream)
        {
            byte[] data = new byte[stream.Length];

            long oldPosition = stream.Position;

            stream.Seek(0, SeekOrigin.Begin);
            stream.Read(data, 0, data.Length);
            stream.Seek(oldPosition, SeekOrigin.Begin);

            this.SetResource(key, data);
        }
示例#8
0
        public byte[] GetRawResource(MadScience.Wrappers.ResourceKey key)
        {
            if (this._Entries.ContainsKey(key) == false || !(this._Entries[key] is StreamEntry))
            {
                throw new KeyNotFoundException();
            }

            StreamEntry entry = (StreamEntry)this._Entries[key];

            this.Stream.Seek(this.BaseOffset + entry.Offset, SeekOrigin.Begin);

            byte[] data = new byte[entry.CompressedSize];
            this.Stream.Read(data, 0, data.Length);
            return(data);
        }
示例#9
0
        public void DeleteResource(MadScience.Wrappers.ResourceKey key)
        {
            if (this.Stream.CanWrite == false)
            {
                throw new NotSupportedException();
            }

            if (this._Entries.ContainsKey(key) == false)
            {
                throw new KeyNotFoundException();
            }

            if (this._Entries[key] is StreamEntry)
            {
                this.OriginalEntries[key] = (StreamEntry)this._Entries[key];
            }

            this._Entries.Remove(key);
        }
示例#10
0
        public void SetResource(MadScience.Wrappers.ResourceKey key, byte[] data)
        {
            if (this.Stream.CanWrite == false)
            {
                throw new NotSupportedException();
            }

            if (this._Entries.ContainsKey(key) && this._Entries[key] is StreamEntry)
            {
                this.OriginalEntries[key] = (StreamEntry)this._Entries[key];
            }

            MemoryEntry entry = new MemoryEntry();

            entry.Compressed     = false;
            entry.CompressedSize = entry.DecompressedSize = (uint)data.Length;
            entry.Data           = (byte[])(data.Clone());

            this._Entries[key] = entry;
        }
示例#11
0
        public byte[] GetResource(MadScience.Wrappers.ResourceKey key)
        {
            if (this._Entries.ContainsKey(key) == false)
            {
                throw new KeyNotFoundException();
            }

            if (this._Entries[key] is StreamEntry)
            {
                StreamEntry entry = (StreamEntry)this._Entries[key];

                this.Stream.Seek(this.BaseOffset + entry.Offset, SeekOrigin.Begin);

                byte[] data;
                if (entry.Compressed == true)
                {
                    data = MadScience.RefPack.Decompression.Decompress(this.Stream);
                    //data = MadScience.RefPack.ByteHelpers.RefPackDecompress(this.Stream);

                    if (data.Length != entry.DecompressedSize)
                    {
                        throw new InvalidOperationException("decompressed data not same length as specified in index");
                    }
                }
                else
                {
                    data = new byte[entry.DecompressedSize];
                    this.Stream.Read(data, 0, data.Length);
                }

                return(data);
            }
            else if (this._Entries[key] is MemoryEntry)
            {
                return((byte[])(((MemoryEntry)this._Entries[key]).Data.Clone()));
            }
            else
            {
                throw new InvalidOperationException();
            }
        }
示例#12
0
        private void loadFromStream(Stream input)
        {
            BinaryReader reader = new BinaryReader(input);

            this.version         = reader.ReadUInt32();
            this.keytable.offset = reader.ReadUInt32();
            this.keytable.size   = reader.ReadUInt32();
            this.localeHash      = reader.ReadUInt64();

            uint        indexersCount = reader.ReadUInt32();
            List <uint> indexers      = new List <uint>();

            for (int i = 0; i < indexersCount; i++)
            {
                indexers.Add(reader.ReadUInt32());
            }

            this.bidirectional    = reader.ReadByte();
            this.casPanelGroup    = reader.ReadUInt32();
            this.casPanelSubGroup = reader.ReadUInt32();

            reader.ReadUInt32();

            uint tgiCount = reader.ReadUInt32();

            for (int i = 0; i < tgiCount; i++)
            {
                MadScience.Wrappers.ResourceKey temp = new MadScience.Wrappers.ResourceKey(input);
                this.keytable.keys.Add(temp);
                //temp = null;
            }

            for (int i = 0; i < indexersCount; i++)
            {
                this.blendLinks.Add(this.keytable.keys[(int)indexers[i]]);
            }

            reader = null;
        }
        private void saveBlendUnit(Stream saveFile)
        {
            // Save everything to the class

            // Clear down the indexers and tgi lists
            blendunit.indexers.Clear();
            blendunit.keytable.keys.Clear();

            if (!String.IsNullOrEmpty(txtSlideLeft.Text) && !String.IsNullOrEmpty(txtSlideRight.Text))
            {
                if (MadScienceSmall.Helpers.validateKey(txtSlideLeft.Text) && MadScienceSmall.Helpers.validateKey(txtSlideRight.Text))
                {
                    // Both sliders
                    blendunit.indexers.Add(0);
                    blendunit.indexers.Add(1);
                    MadScience.Wrappers.ResourceKey kTempLeft = new MadScience.Wrappers.ResourceKey(txtSlideLeft.Text);
                    MadScience.Wrappers.ResourceKey kTempRight = new MadScience.Wrappers.ResourceKey(txtSlideRight.Text);

                    blendunit.keytable.keys.Add(kTempLeft);
                    blendunit.keytable.keys.Add(kTempRight);

                    kTempLeft = null;
                    kTempRight = null;
                }
            }
            else
            {
                // Only one
                blendunit.indexers.Add(0);
                if (!String.IsNullOrEmpty(txtSlideLeft.Text) && MadScienceSmall.Helpers.validateKey(txtSlideLeft.Text))
                {
                    MadScience.Wrappers.ResourceKey kTemp = new MadScience.Wrappers.ResourceKey(txtSlideLeft.Text);
                    blendunit.keytable.keys.Add(kTemp);
                    kTemp = null;
                }
                if (!String.IsNullOrEmpty(txtSlideRight.Text) && MadScienceSmall.Helpers.validateKey(txtSlideRight.Text))
                {
                    MadScience.Wrappers.ResourceKey kTemp = new MadScience.Wrappers.ResourceKey(txtSlideRight.Text);
                    blendunit.keytable.keys.Add(kTemp);
                    kTemp = null;
                }

            }

            if (!chkBiDirectional.Checked)
            {
                blendunit.bidirectional = 0;
            }
            else
            {
                blendunit.bidirectional = 1;
            }

            blendunit.localeHash = MadScienceSmall.StringHelpers.ParseHex64("0x" + txtStringLocaleHash.Text);

            blendunit.casPanelSubGroup = Convert.ToUInt32(txtSortIndex.Text);

            if (chkListCasPanelGroup.GetItemChecked(0) == true) blendunit.casPanelGroup = 2;
            if (chkListCasPanelGroup.GetItemChecked(1) == true) blendunit.casPanelGroup = 8;
            if (chkListCasPanelGroup.GetItemChecked(2) == true) blendunit.casPanelGroup = 16;
            if (chkListCasPanelGroup.GetItemChecked(3) == true) blendunit.casPanelGroup = 64;
            if (chkListCasPanelGroup.GetItemChecked(4) == true) blendunit.casPanelGroup = 128;

            blendunit.Save(saveFile);
        }
        public casPart Load(Stream casFile, bool parseXML)
        {
            BinaryReader reader = new BinaryReader(casFile);

            cFile.version = reader.ReadUInt32();
            cFile.offset = reader.ReadUInt32();

            cFile.numParts = reader.ReadUInt32();

            for (int i = 0; i < cFile.numParts; i++)
            {
                uint xmlSize = reader.ReadUInt32();
                cFile.xmlChunkRaw.Add(MadScience.StreamHelpers.ReadStringUTF16(casFile, (xmlSize * 2)));
                if (parseXML) this.parseRawXML(cFile.xmlChunkRaw.Count);
                uint xmlNum = reader.ReadUInt32();
            }

            byte meshStringSize = reader.ReadByte();
            cFile.meshName = MadScience.StreamHelpers.ReadStringUTF16(casFile, false, (uint)meshStringSize);

            cFile.clothingOrder = reader.ReadSingle();
            cFile.unk2 = reader.ReadByte();

            cFile.clothingType = reader.ReadUInt32();

            cFile.typeFlag = reader.ReadUInt32();
            cFile.ageGenderFlag = reader.ReadUInt32();

            // Pre-populate the age/gender values
            this.ageGender(cFile.ageGenderFlag);

            cFile.clothingCategory = reader.ReadUInt32();

            cFile.tgiIndexBodyPart1 = reader.ReadByte();
            cFile.tgiIndexBodyPart2 = reader.ReadByte();
            cFile.tgiIndexBlendInfoFat = reader.ReadByte();
            cFile.tgiIndexBlendInfoFit = reader.ReadByte();
            cFile.tgiIndexBlendInfoThin = reader.ReadByte();
            cFile.tgiIndexBlendInfoSpecial = reader.ReadByte();

            cFile.unk5 = reader.ReadUInt32();

            byte hasIndexVPXY = reader.ReadByte();
            if (hasIndexVPXY == 1)
            {
                cFile.tgiIndexVPXY = reader.ReadByte();
            }

            cFile.count2 = reader.ReadByte();
            for (int i = 0; i < cFile.count2; i++)
            {
                unkRepeat uR = new unkRepeat();
                uR.unkNum = reader.ReadByte();
                uR.unk2 = reader.ReadUInt32();
                uR.unkRepeatInnerCount = reader.ReadByte();
                for (int j = 0; j < uR.unkRepeatInnerCount; j++)
                {
                    intTriple iT = new intTriple();
                    iT.one = reader.ReadUInt32();
                    iT.two = reader.ReadUInt32();
                    iT.three = reader.ReadUInt32();
                    uR.unkRepeatInnerLoop.Add(iT);
                }
                cFile.count2repeat.Add(uR);
            }

            byte hasIndexDiffuse = reader.ReadByte();
            if (hasIndexDiffuse == 1)
            {
                cFile.tgiIndexDiffuse = reader.ReadByte();
            }
            byte hasIndexSpecular = reader.ReadByte();
            if (hasIndexSpecular == 1)
            {
                cFile.tgiIndexSpecular = reader.ReadByte();
            }

            cFile.count3 = reader.ReadByte();
            for (int i = 0; i < cFile.count3; i++)
            {
                cFile.count3repeat.Add(reader.ReadByte());
            }

            cFile.count4 = reader.ReadByte();
            for (int i = 0; i < cFile.count4; i++)
            {
                cFile.count4repeat.Add(reader.ReadByte());
            }

            cFile.count5 = reader.ReadByte();
            for (int i = 0; i < cFile.count5; i++)
            {
                cFile.count5repeat.Add(reader.ReadByte());
            }

            byte len = reader.ReadByte();
            cFile.unkString = MadScience.StreamHelpers.ReadStringUTF16(casFile, false, (uint)len);

            cFile.count6 = reader.ReadByte();
            for (int i = 0; i < cFile.count6; i++)
            {
                MadScience.Wrappers.ResourceKey tgi = new MadScience.Wrappers.ResourceKey(casFile, (int)MadScience.Wrappers.ResourceKeyOrder.IGT);
                cFile.tgi64list.Add(tgi);
            }

            reader.Close();
            return this.cFile;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            TextReader    r          = new StreamReader(@"P:\Stuart\Desktop\fullPatternList.xml");
            XmlSerializer s          = new XmlSerializer(typeof(files));
            files         lookupList = (files)s.Deserialize(r);

            r.Close();

            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < lookupList.Items.Count; i++)
            {
                Stream mem = File.OpenRead(@"P:\Stuart\Desktop\FullBuild0\config\xml\root\" + lookupList.Items[i].fullCasPartname + ".xml");

                Patterns.patternDetails pDetails = Patterns.parsePatternComplate(mem);

                if (String.IsNullOrEmpty(pDetails.category))
                {
                    continue;
                }

                patternsFile cPattern = new patternsFile();

                MadScience.Wrappers.ResourceKey rKey = new MadScience.Wrappers.ResourceKey("key:" + lookupList.Items[i].typeid.Remove(0, 2) + ":" + lookupList.Items[i].groupid.Remove(0, 2) + ":" + lookupList.Items[i].instanceid.Remove(0, 2));

                cPattern.key = rKey.ToString();

                if (!StreamHelpers.isValidStream(KeyUtils.findKey("key:00B2D882:00000000:" + StringHelpers.HashFNV64(pDetails.name.Substring(pDetails.name.LastIndexOf("\\") + 1)).ToString("X16"))))
                {
                    cPattern.texturename = pDetails.BackgroundImage;
                }
                else
                {
                    cPattern.texturename = "key:00B2D882:00000000:" + StringHelpers.HashFNV64(pDetails.name.Substring(pDetails.name.LastIndexOf("\\") + 1)).ToString("X16");
                }
                cPattern.casPart = pDetails.name.Substring(pDetails.name.LastIndexOf("\\") + 1);

                switch (pDetails.category)
                {
                case "Old":
                    break;

                default:
                    //string fullName = pDetails.Substring(patternTexture.LastIndexOf("\\") + 1);
                    string category = pDetails.filename;
                    category = category.Replace(@"($assetRoot)\InGame\Complates\", "");
                    category = category.Replace(@"Materials\", "");
                    category = category.Replace(@".tga", "");
                    category = category.Replace(@".dds", "");

                    if (category.IndexOf("\\") > -1)
                    {
                        category = category.Substring(0, category.IndexOf("\\"));
                    }
                    else
                    {
                        category = pDetails.category;
                    }

                    string subCategory = pDetails.filename;
                    subCategory = subCategory.Replace(@"($assetRoot)\InGame\Complates\", "");
                    subCategory = subCategory.Replace(@"Materials\", "");
                    subCategory = subCategory.Replace(@".tga", "");
                    subCategory = subCategory.Replace(@".dds", "");
                    if (subCategory.IndexOf("\\") > -1)
                    {
                        subCategory = subCategory.Substring(subCategory.IndexOf("\\") + 1);
                    }

                    if (subCategory.Contains("\\"))
                    {
                        subCategory = subCategory.Remove(subCategory.IndexOf("\\"));
                    }
                    else
                    {
                        subCategory = "";
                    }

                    if (subCategory == pDetails.name)
                    {
                        subCategory = "";
                    }

                    cPattern.category    = category;
                    cPattern.subcategory = subCategory;

                    Console.WriteLine(pDetails.name + " " + category + " " + subCategory);

                    sb.AppendLine("<pattern key=\"" + cPattern.key + "\" texturename=\"\" category=\"" + category + "\" subcategory=\"" + subCategory + "\">" + pDetails.name + "</file>");

                    break;
                }

                //xtr.Close();

                mem.Close();
            }

            Clipboard.SetText(sb.ToString());
            Console.WriteLine("Done");
        }
        private void button1_Click(object sender, EventArgs e)
        {
            TextReader r = new StreamReader(@"P:\Stuart\Desktop\fullPatternList.xml");
            XmlSerializer s = new XmlSerializer(typeof(files));
            files lookupList = (files)s.Deserialize(r);
            r.Close();

            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < lookupList.Items.Count; i++)
            {

                Stream mem = File.OpenRead(@"P:\Stuart\Desktop\FullBuild0\config\xml\root\" + lookupList.Items[i].fullCasPartname + ".xml");

                Patterns.patternDetails pDetails = Patterns.parsePatternComplate(mem);

                if (String.IsNullOrEmpty(pDetails.category)) continue;

                patternsFile cPattern = new patternsFile();

                MadScience.Wrappers.ResourceKey rKey = new MadScience.Wrappers.ResourceKey("key:" + lookupList.Items[i].typeid.Remove(0, 2) + ":" + lookupList.Items[i].groupid.Remove(0, 2) + ":" + lookupList.Items[i].instanceid.Remove(0,2));

                cPattern.key = rKey.ToString();

                if (!StreamHelpers.isValidStream(KeyUtils.findKey("key:00B2D882:00000000:" + StringHelpers.HashFNV64(pDetails.name.Substring(pDetails.name.LastIndexOf("\\") + 1)).ToString("X16"))))
                {
                    cPattern.texturename = pDetails.BackgroundImage;
                }
                else
                {
                    cPattern.texturename = "key:00B2D882:00000000:" + StringHelpers.HashFNV64(pDetails.name.Substring(pDetails.name.LastIndexOf("\\") + 1)).ToString("X16");
                }
                cPattern.casPart = pDetails.name.Substring(pDetails.name.LastIndexOf("\\") + 1);

                switch (pDetails.category)
                {
                    case "Old":
                        break;
                    default:
                        //string fullName = pDetails.Substring(patternTexture.LastIndexOf("\\") + 1);
                        string category = pDetails.filename;
                        category = category.Replace(@"($assetRoot)\InGame\Complates\", "");
                        category = category.Replace(@"Materials\", "");
                        category = category.Replace(@".tga", "");
                        category = category.Replace(@".dds", "");

                        if (category.IndexOf("\\") > -1)
                        {
                            category = category.Substring(0, category.IndexOf("\\"));
                        }
                        else
                        {
                            category = pDetails.category;
                        }

                        string subCategory = pDetails.filename;
                        subCategory = subCategory.Replace(@"($assetRoot)\InGame\Complates\", "");
                        subCategory = subCategory.Replace(@"Materials\", "");
                        subCategory = subCategory.Replace(@".tga", "");
                        subCategory = subCategory.Replace(@".dds", "");
                        if (subCategory.IndexOf("\\") > -1)
                        {
                            subCategory = subCategory.Substring(subCategory.IndexOf("\\") + 1);
                        }

                        if (subCategory.Contains("\\"))
                        {
                            subCategory = subCategory.Remove(subCategory.IndexOf("\\"));
                        }
                        else
                        {
                            subCategory = "";
                        }

                        if (subCategory == pDetails.name) subCategory = "";

                        cPattern.category = category;
                        cPattern.subcategory = subCategory;

                        Console.WriteLine(pDetails.name + " " + category + " " + subCategory);

                        sb.AppendLine("<pattern key=\"" + cPattern.key + "\" texturename=\"\" category=\"" + category + "\" subcategory=\"" + subCategory + "\">" + pDetails.name + "</file>");

                        break;
                }

                //xtr.Close();

                mem.Close();
            }

            Clipboard.SetText(sb.ToString());
            Console.WriteLine("Done");
        }
        private void loadFromStream(Stream input)
        {
            BinaryReader reader = new BinaryReader(input);

            this.version = reader.ReadUInt32();
            this.keytable.offset = reader.ReadUInt32();
            this.keytable.size = reader.ReadUInt32();
            this.localeHash = reader.ReadUInt64();

            uint indexersCount = reader.ReadUInt32();
            List<uint> indexers = new List<uint>();
            for (int i = 0; i < indexersCount; i++)
            {
                indexers.Add(reader.ReadUInt32());
            }

            this.bidirectional = reader.ReadByte();
            this.casPanelGroup = reader.ReadUInt32();
            this.casPanelSubGroup = reader.ReadUInt32();

            reader.ReadUInt32();

            uint tgiCount = reader.ReadUInt32();
            for (int i = 0; i < tgiCount; i++)
            {
                MadScience.Wrappers.ResourceKey temp = new MadScience.Wrappers.ResourceKey(input);
                this.keytable.keys.Add(temp);
                //temp = null;
            }

            for (int i = 0; i < indexersCount; i++)
            {
                this.blendLinks.Add(this.keytable.keys[(int)indexers[i]]);
            }

            reader = null;
        }
示例#18
0
 public Stream GetResourceStream(MadScience.Wrappers.ResourceKey key)
 {
     return(new MemoryStream(this.GetResource(key)));
 }
        public static Stream findPattern(patternDetails pattern)
        {
            Wrappers.ResourceKey rKey = new MadScience.Wrappers.ResourceKey(0x00B2D882, 0x0, StringHelpers.HashFNV64(pattern.name));

            Stream patternThumb = KeyUtils.findKey(rKey);

            return patternThumb;
        }
示例#20
0
 public static Stream findKey(MadScience.Wrappers.ResourceKey resourceKey)
 {
     return(findKey(resourceKey, 2));
 }
        private void loadFromStream(Stream input)
        {
            BinaryReader reader = new BinaryReader(input);
            this.version = reader.ReadUInt32();
            this.keytable.offset = reader.ReadUInt32();
            this.keytable.size = reader.ReadUInt32();

            byte nameLength = reader.ReadByte();
            this.partName = MadScience.StreamHelpers.ReadStringUTF16(input, false, (uint)nameLength);
            this.blendType = reader.ReadUInt32();

            this.blendTgi = new MadScience.Wrappers.ResourceKey(input, (int)MadScience.Wrappers.ResourceKeyOrder.TGI);

            uint geomCount = reader.ReadUInt32();
            for (int i = 0; i < geomCount; i++)
            {
                FacialBlendGeomBoneEntry geomBoneEntry = new FacialBlendGeomBoneEntry(input);
                this.geomBoneEntries.Add(geomBoneEntry);
                geomBoneEntry = null;
            }
            this.keytable.Load(input);

            reader = null;
        }
示例#22
0
        private void saveBlendUnit(Stream saveFile)
        {
            // Save everything to the class

            // Clear down the indexers and tgi lists
            blendunit.indexers.Clear();
            blendunit.keytable.keys.Clear();

            if (!String.IsNullOrEmpty(txtSlideLeft.Text) && !String.IsNullOrEmpty(txtSlideRight.Text))
            {
                if (MadScienceSmall.Helpers.validateKey(txtSlideLeft.Text) && MadScienceSmall.Helpers.validateKey(txtSlideRight.Text))
                {
                    // Both sliders
                    blendunit.indexers.Add(0);
                    blendunit.indexers.Add(1);
                    MadScience.Wrappers.ResourceKey kTempLeft  = new MadScience.Wrappers.ResourceKey(txtSlideLeft.Text);
                    MadScience.Wrappers.ResourceKey kTempRight = new MadScience.Wrappers.ResourceKey(txtSlideRight.Text);

                    blendunit.keytable.keys.Add(kTempLeft);
                    blendunit.keytable.keys.Add(kTempRight);

                    kTempLeft  = null;
                    kTempRight = null;
                }
            }
            else
            {
                // Only one
                blendunit.indexers.Add(0);
                if (!String.IsNullOrEmpty(txtSlideLeft.Text) && MadScienceSmall.Helpers.validateKey(txtSlideLeft.Text))
                {
                    MadScience.Wrappers.ResourceKey kTemp = new MadScience.Wrappers.ResourceKey(txtSlideLeft.Text);
                    blendunit.keytable.keys.Add(kTemp);
                    kTemp = null;
                }
                if (!String.IsNullOrEmpty(txtSlideRight.Text) && MadScienceSmall.Helpers.validateKey(txtSlideRight.Text))
                {
                    MadScience.Wrappers.ResourceKey kTemp = new MadScience.Wrappers.ResourceKey(txtSlideRight.Text);
                    blendunit.keytable.keys.Add(kTemp);
                    kTemp = null;
                }
            }

            if (!chkBiDirectional.Checked)
            {
                blendunit.bidirectional = 0;
            }
            else
            {
                blendunit.bidirectional = 1;
            }

            blendunit.localeHash = MadScienceSmall.StringHelpers.ParseHex64("0x" + txtStringLocaleHash.Text);

            blendunit.casPanelSubGroup = Convert.ToUInt32(txtSortIndex.Text);

            if (chkListCasPanelGroup.GetItemChecked(0) == true)
            {
                blendunit.casPanelGroup = 2;
            }
            if (chkListCasPanelGroup.GetItemChecked(1) == true)
            {
                blendunit.casPanelGroup = 8;
            }
            if (chkListCasPanelGroup.GetItemChecked(2) == true)
            {
                blendunit.casPanelGroup = 16;
            }
            if (chkListCasPanelGroup.GetItemChecked(3) == true)
            {
                blendunit.casPanelGroup = 64;
            }
            if (chkListCasPanelGroup.GetItemChecked(4) == true)
            {
                blendunit.casPanelGroup = 128;
            }

            blendunit.Save(saveFile);
        }