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 } } }