public void Read(BinaryBlock b) { _infoMap = new Dictionary <long, ObjectInfo>(); int entries = b.ReadInt(); if (_version > 13) { b.Align(4); } for (int i = 0; i < entries; i++) { long pathID; if (_version > 13) { pathID = b.ReadLong(); } else { pathID = b.ReadInt(); } ObjectInfo info = new ObjectInfo(_version); info.Read(b); _infoMap.Add(pathID, info); } }
public void Read(BinaryBlock b) { Offset = b.ReadUnsignedInt(); Length = b.ReadUnsignedInt(); TypeId = b.ReadInt(); ClassId = b.ReadShort(); IsDestroyed = b.ReadShort(); // TODO: the only way I can get this to work, align doesn't! if (_version > 13) { b.ReadInt(); } // sanity check Debug.Assert(TypeId == ClassId || (ClassId == 114 && TypeId < 0)); }
private void ReadGuid(BinaryBlock b) { bool order = b.BigEndian; b.BigEndian = true; // TODO: should be BE or not Guid = new Guid(b.ReadInt(), b.ReadShort(), b.ReadShort(), b.ReadBytes(8)); b.BigEndian = order; }
public void Read(BinaryBlock b) { if (_version > 5) { AssetPath = b.ReadStringToNull(); } ReadGuid(b); RefType = b.ReadInt(); FilePath = b.ReadStringToNull(); }
public void Read(BinaryBlock b) { int entries = b.ReadInt(); for (int i = 0; i < entries; i++) { FileIdentifier fi = new FileIdentifier(_version); fi.Read(b); _fileIds.Add(fi); } }
public void Read(BinaryBlock b) { if (_version > 6) { _revision = b.ReadStringToNull(); Attributes = b.ReadInt(); } if (_version > 13) { Embedded = b.ReadBoolean(); int numBaseClasses = b.ReadInt(); for (int i = 0; i < numBaseClasses; i++) { int classID = b.ReadInt(); BaseClass baseClass = new BaseClass(classID); if (classID < 0) { UnityHash128 scriptID = new UnityHash128(_version); scriptID.Read(b); baseClass.ScriptID = scriptID; } UnityHash128 oldTypeHash = new UnityHash128(_version); oldTypeHash.Read(b); baseClass.OldTypeHash = oldTypeHash; if (Embedded) { AssetTypeNode node = new AssetTypeNode(); AssetTypeReader nodeReader = new AssetTypeReader(_version); nodeReader.Read(b, node); baseClass.TypeTree = node; } _typeMap.Add(classID, baseClass); } } else { int numBaseClasses = b.ReadInt(); for (int i = 0; i < numBaseClasses; i++) { int classID = b.ReadInt(); BaseClass baseClass = new BaseClass(classID); AssetTypeNode node = new AssetTypeNode(); AssetTypeReader nodeReader = new AssetTypeReader(_version); nodeReader.Read(b, node); baseClass.TypeTree = node; _typeMap.Add(classID, baseClass); } Embedded = numBaseClasses > 0; if (_version > 6) { b.ReadInt(); // padding } } }