1use std::io::Cursor;
5
6use crate::ByteSpan;
7use binrw::BinRead;
8use binrw::binrw;
9
10#[binrw]
11#[derive(Debug)]
12enum SkeletonType {
13 #[brw(magic = 0u8)]
14 Human,
15 #[brw(magic = 1u8)]
16 Monster,
17 #[brw(magic = 2u8)]
18 DemiHuman,
19 #[brw(magic = 3u8)]
20 Weapon,
21}
22
23#[binrw]
24#[derive(Debug)]
25#[brw(little)]
26struct PapHeader {
27 magic: i32, version: i32,
29
30 num_animations: i16,
31 model_id: u16,
32 model_type: SkeletonType,
33 variant: i32,
34
35 info_offset: i32,
36 havok_position: i32,
37 footer_position: i32,
38}
39
40#[derive(Debug)]
41pub struct Pap {}
42
43impl Pap {
44 pub fn from_existing(buffer: ByteSpan) -> Option<Self> {
46 let mut cursor = Cursor::new(buffer);
47 PapHeader::read(&mut cursor).ok()?;
48
49 Some(Pap {})
50 }
51}