From 3be8219eca4d64c44539980f049950f6ae02387f Mon Sep 17 00:00:00 2001 From: Janis Date: Sat, 22 Apr 2023 01:02:45 +0200 Subject: [PATCH] pointer helper types that the sdk uses --- src/helper_types.rs | 46 +++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 47 insertions(+) create mode 100644 src/helper_types.rs 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;