private bool DeserializeHeader(ObjectReader header) { // Not a PCC file. if (header.ReadUInt32() != 0x9E2A83C1) { return(false); } // Unsupported unreal engine version if (header.ReadUInt16() != 0x02AC || header.ReadUInt16() != 0xC2) { return(false); } _unkn1 = header.ReadUInt32(); _folderName = header.ReadString(); PackageFlags = (PackageFlags)header.ReadUInt32(); _unknDummy = header.ReadUInt32(); _nameCount = header.ReadInt32(); _nameOffset = header.ReadUInt32(); _exportCount = header.ReadInt32(); _exportOffset = header.ReadUInt32(); _importCount = header.ReadInt32(); _importOffset = header.ReadUInt32(); _unkn2 = header.ReadUInt32(); // Both of these often match _unkn1. _unkn3 = header.ReadUInt32(); // UnHood references "first export offset", cant see that working here? header.ReadRawData(12); // seemingly 0's _GUID_A = header.ReadUInt32(); _GUID_B = header.ReadUInt32(); _GUID_C = header.ReadUInt32(); _GUID_D = header.ReadUInt32(); _generations = header.ReadUInt32(); header.ReadRawData(4); // Copy of export count? header.ReadRawData(4); // Copy of name count? header.ReadRawData(4); // Another 0 // Engine version mis-match if (header.ReadUInt32() != 0x18EF) { return(false); } // Cooker version mis-match if (header.ReadUInt32() != 0x3006B) { return(false); } _unkn4 = header.ReadUInt32(); // Seems to be the same for all files. _unkn5 = header.ReadUInt32(); // Same as above, UnHood possibly refers to this as package flags, old remnants? _compressionFlag = (FileCompressionFlags)header.ReadUInt32(); _chunkCount = header.ReadUInt32(); // TODO: support compressed files.. return(true); }
private bool DeserializeHeader(ObjectReader header) { // Not a PCC file. if (header.ReadUInt32() != 0x9E2A83C1) return false; // Unsupported unreal engine version if (header.ReadUInt16() != 0x02AC || header.ReadUInt16() != 0xC2) return false; _unkn1 = header.ReadUInt32(); _folderName = header.ReadString(); PackageFlags = (PackageFlags)header.ReadUInt32(); _unknDummy = header.ReadUInt32(); _nameCount = header.ReadInt32(); _nameOffset = header.ReadUInt32(); _exportCount = header.ReadInt32(); _exportOffset = header.ReadUInt32(); _importCount = header.ReadInt32(); _importOffset = header.ReadUInt32(); _unkn2 = header.ReadUInt32(); // Both of these often match _unkn1. _unkn3 = header.ReadUInt32(); // UnHood references "first export offset", cant see that working here? header.ReadRawData(12); // seemingly 0's _GUID_A = header.ReadUInt32(); _GUID_B = header.ReadUInt32(); _GUID_C = header.ReadUInt32(); _GUID_D = header.ReadUInt32(); _generations = header.ReadUInt32(); header.ReadRawData(4); // Copy of export count? header.ReadRawData(4); // Copy of name count? header.ReadRawData(4); // Another 0 // Engine version mis-match if (header.ReadUInt32() != 0x18EF) return false; // Cooker version mis-match if (header.ReadUInt32() != 0x3006B) return false; _unkn4 = header.ReadUInt32(); // Seems to be the same for all files. _unkn5 = header.ReadUInt32(); // Same as above, UnHood possibly refers to this as package flags, old remnants? _compressionFlag = (FileCompressionFlags)header.ReadUInt32(); _chunkCount = header.ReadUInt32(); // TODO: support compressed files.. return true; }