use std::marker::PhantomData; 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]);