use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct TextureHeader {
pub width: i32,
pub height: i32,
pub frame_count: i32,
pub rgba_size: i32,
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct AllFramesHeader {
pub width: i32,
pub height: i32,
pub frame_count: i32,
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct RgmdHeader {
pub magic: [u8; 4],
pub version: [u8; 4],
pub submesh_count: i32,
pub frame_count: i32,
pub total_vertex_count: i32,
pub total_index_count: i32,
pub radius: f32,
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct RgmdSubmeshHeader {
pub textured: u8,
pub color_r: u8,
pub color_g: u8,
pub color_b: u8,
pub texture_id: u16,
pub image_id: u8,
pub _pad: u8,
pub vertex_count: i32,
pub index_count: i32,
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct RgmdVertex {
pub position: [f32; 3],
pub normal: [f32; 3],
pub uv: [f32; 2],
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct RgmdDeltaVertex {
pub dx: f32,
pub dy: f32,
pub dz: f32,
pub dnx: f32,
pub dny: f32,
pub dnz: f32,
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct RgplHeader {
pub magic: [u8; 4],
pub placement_count: i32,
pub light_count: i32,
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct RgplPlacement {
pub model_name: [u8; 32],
pub source_id: [u8; 32],
pub transform: [f32; 16],
pub texture_id: u16,
pub image_id: u8,
pub object_type: u8,
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct RgplLight {
pub name: [u8; 32],
pub color: [f32; 3],
pub position: [f32; 3],
pub range: f32,
pub light_type: u8,
pub _pad: [u8; 3],
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct RobHeader {
pub segment_count: i32,
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct RobSegmentHeader {
pub segment_name: [u8; 8],
pub has_model: u8,
pub _pad: [u8; 3],
pub model_data_size: i32,
}
#[derive(Clone, Copy, Pod, Zeroable)]
#[repr(C)]
pub struct RgWorldDescriptor {
pub world_id: i32,
pub has_wld: u8,
pub _pad: [u8; 3],
pub texbsi_id: u16,
pub _pad2: [u8; 2],
pub rgm_path: [u8; 64],
pub wld_path: [u8; 64],
pub palette_path: [u8; 64],
}