public void Read(AssetsFileReader reader) { reader.bigEndian = false; header = reader.ReadStringLength(4); if (header != "cldb") { throw new Exception("header not detected. is this a cldb file?"); } fileVersion = reader.ReadByte(); flags = 0; if (fileVersion == 4) { flags = reader.ReadByte(); } switch (fileVersion) { case 1: compressionType = 0; break; case 2: compressionType = reader.ReadByte(); break; case 3: case 4: compressionType = reader.ReadByte(); compressedSize = reader.ReadUInt32(); uncompressedSize = reader.ReadUInt32(); break; default: return; } unityVersionCount = reader.ReadByte(); unityVersions = new string[unityVersionCount]; for (int i = 0; i < unityVersionCount; i++) { unityVersions[i] = reader.ReadCountString(); } stringTableLen = reader.ReadUInt32(); stringTablePos = reader.ReadUInt32(); }
public ulong Read(AssetsFileReader reader, ulong filePos) { reader.bigEndian = false; header = reader.ReadStringLength(4); if (header != "cldb") { return(reader.Position); } fileVersion = reader.ReadByte(); switch (fileVersion) { case 1: break; case 3: compressionType = reader.ReadByte(); if (compressionType != 0) { return(reader.Position); } compressedSize = reader.ReadUInt32(); uncompressedSize = reader.ReadUInt32(); break; default: return(reader.Position); } unityVersionCount = reader.ReadByte(); pUnityVersions = new string[unityVersionCount]; for (int i = 0; i < unityVersionCount; i++) { pUnityVersions[i] = reader.ReadCountString(); } stringTableLen = reader.ReadUInt32(); stringTablePos = reader.ReadUInt32(); return(reader.Position); }