#[binrw::binrw]
#[brw(little)]
#[derive(Debug, Clone)]
pub struct PhysicsInfo {
pub volume: f32,
pub center_of_gravity: [f32; 3],
pub moment_of_inertia_packed: [f32; 6],
}
#[binrw::binrw]
#[brw(little)]
#[derive(Debug, Clone)]
pub struct VertexId(pub u32);
#[binrw::binrw]
#[brw(little)]
#[derive(Debug, Clone)]
pub struct Mesh {
#[brw(
magic = b"\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x3F"
)]
#[br(temp)]
#[bw(try_calc=(positions.len()*3).try_into())]
pub pos_count: u32,
#[brw(magic = 4u32)]
#[br(count=pos_count/3)]
pub positions: Vec<[f32; 3]>,
#[br(temp)]
#[bw(try_calc=(faces.len()*3).try_into())]
pub face_count: u32,
#[br(count=face_count/3)]
pub faces: Vec<[VertexId; 3]>,
}
#[binrw::binrw]
#[brw(little)]
#[brw(magic = b"CSGPHS\x03\0\0\0")]
#[derive(Debug, Clone)]
pub struct CSGPHS3 {
#[br(parse_with=binrw::helpers::until_eof)]
pub meshes: Vec<Mesh>,
}