private string ReadHavokEntry(ResourceEntry entry, XmlWriter resourceXML, string name)
        {
            HavokResource resource = new HavokResource();

            using (MemoryStream stream = new MemoryStream(entry.Data))
            {
                resource.Deserialize(entry.Version, stream, _Endian);
                entry.Data = resource.Data;
            }

            if (FileNamesAndHash.ContainsKey(resource.FileHash) && name.Contains("File_"))
            {
                name = FileNamesAndHash[resource.FileHash];
            }

            resourceXML.WriteElementString("File", name);
            resourceXML.WriteElementString("Unk01", resource.Unk01.ToString());
            resourceXML.WriteElementString("FileHash", resource.FileHash.ToString());
            resourceXML.WriteElementString("Unk02", resource.Unk02.ToString());
            return(name);
        }
Exemplo n.º 2
0
        private ResourceEntry WriteHavokEntry(ResourceEntry entry, XPathNodeIterator nodes, string sdsFolder, XmlNode descNode)
        {
            HavokResource resource = new HavokResource();

            // Read contents from SDSContent.xml
            nodes.Current.MoveToNext();
            string name = nodes.Current.Value;

            nodes.Current.MoveToNext();
            uint unk01 = uint.Parse(nodes.Current.Value);

            nodes.Current.MoveToNext();
            ulong filehash = ulong.Parse(nodes.Current.Value);

            nodes.Current.MoveToNext();
            uint unk02 = uint.Parse(nodes.Current.Value);

            nodes.Current.MoveToNext();
            ushort version = ushort.Parse(nodes.Current.Value);

            // Serialize into separate stream
            using (MemoryStream stream = new MemoryStream())
            {
                resource.Unk01    = unk01;
                resource.FileHash = filehash;
                resource.Unk02    = unk02;
                resource.Data     = File.ReadAllBytes(sdsFolder + "/" + name);
                resource.Serialize(entry.Version, stream, Endian);

                // Set entry information and this is it.
                entry.Data    = stream.ToArray();
                entry.Version = version;
            }

            descNode.InnerText = "not available";

            return(entry);
        }
Exemplo n.º 3
0
        private string ReadHavokEntry(ResourceEntry entry, XmlWriter resourceXML, string name)
        {
            HavokResource resource = new HavokResource();

            using (MemoryStream stream = new MemoryStream(entry.Data))
            {
                resource.Deserialize(entry.Version, stream, _Endian);
                entry.Data = resource.Data;
            }

            // If not correctly named - See if its toolkit standard 'File_'.
            // If yes, see if we can grab the name from our DB and apply hkx extension.
            if (FileNamesAndHash.ContainsKey(resource.FileHash) && name.Contains("File_"))
            {
                name  = FileNamesAndHash[resource.FileHash];
                name += ".hkx";
            }

            resourceXML.WriteElementString("File", name);
            resourceXML.WriteElementString("Unk01", resource.Unk01.ToString());
            resourceXML.WriteElementString("FileHash", resource.FileHash.ToString());
            resourceXML.WriteElementString("Unk02", resource.Unk02.ToString());
            return(name);
        }