private void readBinary(ArkArchive archive, ReadingOptions options)
        {
            X        = archive.ReadFloat();
            Y        = archive.ReadFloat();
            Z        = archive.ReadFloat();
            UnkByte  = archive.ReadByte();
            UnkFloat = archive.ReadFloat();

            if (options.HibernationObjectProperties)
            {
                ArkArchive nameArchive = archive.Slice(archive.ReadInt());
                readBinaryNameTable(nameArchive);
            }
            else
            {
                archive.SkipBytes(archive.ReadInt());
                nameTable = null;

                // Unknown data since the missed names are unrelated to the main nameTable
                archive.HasUnknownData = true;
            }

            ArkArchive objectArchive = archive.Slice(archive.ReadInt());

            readBinaryObjects(objectArchive, options);

            UnkInt1    = archive.ReadInt();
            ClassIndex = archive.ReadInt();
        }
Exemplo n.º 2
0
        private void readBinaryDataFilesObjectMap(ArkArchive archive, ReadingOptions options)
        {
            DataFilesObjectMap.Clear();
            if (options.DataFilesObjectMap)
            {
                int dataFilesCount = archive.ReadInt();
                for (int n = 0; n < dataFilesCount; n++)
                {
                    int      level = archive.ReadInt();
                    int      count = archive.ReadInt();
                    string[] names = new string[count];
                    for (int index = 0; index < count; index++)
                    {
                        names[index] = archive.ReadString();
                    }

                    if (!DataFilesObjectMap.ContainsKey(level) || DataFilesObjectMap[level] == null)
                    {
                        DataFilesObjectMap.Add(level, new List <string[]> {
                            names
                        });
                    }
                }
            }
            else
            {
                archive.HasUnknownData = true;
                int count = archive.ReadInt();
                for (int entry = 0; entry < count; entry++)
                {
                    archive.SkipBytes(4);
                    int stringCount = archive.ReadInt();
                    for (int stringIndex = 0; stringIndex < stringCount; stringIndex++)
                    {
                        archive.SkipString();
                    }
                }
            }
        }