diff --git a/src/helper_types.rs b/src/helper_types.rs new file mode 100644 index 0000000..da3c3c3 --- /dev/null +++ b/src/helper_types.rs @@ -0,0 +1,46 @@ +use crate::{fname::FName, tarray::FString}; + +#[repr(C)] +#[derive(Debug)] +pub struct TWeakObjectPtr { + object_index: u32, + serial_number: u32, + phantom: PhantomData, +} + +#[repr(C)] +#[derive(Debug)] +pub struct TPersistentObjectPtr { + weak: TWeakObjectPtr, + tag_at_last_test: u32, + object_id: P, +} + +pub type TLazyObjectPtr = TPersistentObjectPtr; +pub type TSoftObjectPtr = TPersistentObjectPtr; + +#[repr(C)] +#[derive(Debug)] +pub struct FSoftObjectPath { + asset_path_name: FName, + sub_path_string: FString, +} + +#[repr(C)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct TEnumAsByte { + inner: u8, + phantom: PhantomData, +} + +impl TEnumAsByte { + pub fn as_enum(&self) -> &T { + unsafe { &*core::mem::transmute::<_, *const T>(&self.inner as *const u8) } + } + pub fn as_mut_enum(&mut self) -> &mut T { + unsafe { &mut *core::mem::transmute::<_, *mut T>(&mut self.inner as *mut u8) } + } +} + +#[derive(Debug)] +pub struct FText([u8; 0x28]); diff --git a/src/lib.rs b/src/lib.rs index aaf55bf..7182212 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,6 +9,7 @@ // mod core_types; pub mod fname; pub mod global_tables; +pub mod helper_types; pub mod tarray; // pub mod types; pub mod v2_types;