コード例 #1
0
ファイル: AssetsMetadata.cs プロジェクト: sc2ad/BnkParser
 private bool ShouldForceLoadObject(ObjectRecord record)
 {
     if (Types[record.TypeIndex].ClassID == AssetsConstants.ClassID.MonoScriptType)
     {
         return(true);
     }
     return(false);
 }
コード例 #2
0
ファイル: AssetsMetadata.cs プロジェクト: sc2ad/BnkParser
        private int PreloadObjectOrder(ObjectRecord record)
        {
            switch (Types[record.TypeIndex].ClassID)
            {
            case AssetsConstants.ClassID.MonoScriptType:
                return(0);

            default:
                return(10000);
            }
        }
コード例 #3
0
ファイル: AssetsMetadata.cs プロジェクト: sc2ad/BnkParser
        public void Parse(AssetsReader reader)
        {
            Version      = reader.ReadCStr();
            Platform     = reader.ReadInt32();
            HasTypeTrees = reader.ReadBoolean();
            int numTypes = reader.ReadInt32();

            for (int i = 0; i < numTypes; i++)
            {
                Types.Add(new AssetsType(reader, HasTypeTrees));
            }

            List <ObjectRecord> records = new List <ObjectRecord>();
            int numObj = reader.ReadInt32();

            for (int i = 0; i < numObj; i++)
            {
                reader.AlignTo(4);
                var obj = new ObjectRecord(reader);
                records.Add(obj);
            }

            int numAdds = reader.ReadInt32();

            for (int i = 0; i < numAdds; i++)
            {
                reader.AlignTo(4);
                Adds.Add(new RawPtr(reader));
            }
            int numExt = reader.ReadInt32();

            for (int i = 0; i < numExt; i++)
            {
                ExternalFiles.Add(new ExternalFile(reader));
            }
            reader.ReadCStr();

            //load the object infos in order based on their type
            foreach (var record in records.OrderBy(x => PreloadObjectOrder(x)).ThenBy(x => x.ObjectID))
            {
                var obj = ObjectInfo <AssetsObject> .Parse(ParentFile, record);

                ObjectInfos.Add(obj);
                if (ShouldForceLoadObject(record))
                {
                    var o = obj.Object;
                }
            }
        }