rust_unreal_unpak/pak/
mod.rs

1pub mod pak_file;
2pub(crate) mod pak_reader;
3
4macro_rules! get_size {
5    ($e:ty) => {
6        std::mem::size_of::<$e>() as isize
7    };
8}
9
10#[derive(Debug, PartialEq, Eq)]
11pub enum PakVersionSizes {
12    // sizeof(Magic) + sizeof(Version) + sizeof(IndexOffset) + sizeof(IndexSize) + sizeof(IndexHash) + sizeof(EncryptedIndex) + sizeof(Guid)
13    Size = get_size!(i32) * 2 + get_size!(u64) * 2 + 20 + 1 + 16,
14    SizeV8 = PakVersionSizes::Size as isize + (32 * 4),
15    SizeV8A = PakVersionSizes::SizeV8 as isize + 32,
16    SizeV9 = PakVersionSizes::SizeV8A as isize + 1
17}
18
19pub(crate) enum PakVersions {
20    Initial = 1,
21    NoTimestamps = 2,
22    CompressionEncryption = 3,
23    IndexEncryption = 4,
24    RelativeChunkOffsets = 5,
25    DeleteRecords = 6,
26    EncryptionKeyGuid = 7,
27    FNameBasedCompressionMethod = 8,
28    FrozenIndex = 9,
29
30    Last,
31}
32
33impl PakVersionSizes {
34    pub fn get_sizes() -> Vec<Self> {
35        return vec![
36            Self::Size,
37            Self::SizeV8,
38            Self::SizeV8A,
39            Self::SizeV9
40        ]
41    }
42}