UEnum, UFunction and UProperty injection

This commit is contained in:
Janis 2023-04-21 17:58:49 +02:00
parent 6ea9e81e29
commit 8d2f0ab142

View file

@ -513,6 +513,37 @@ pub(crate) fn inject_coreuobject_types(sdk: &mut Sdk) {
methods: vec![],
};
let ufield = sdk.inject_type(ufield).expect("ufield");
let uenum = Class {
is_class: true,
size: 48,
name: "Enum".to_string(),
full_name: "Class CoreUObject.Enum".to_string(),
super_class: Some(unsafe { ufield.cast() }),
fields: vec![
ClassField {
offset: 48,
size: 16,
name: "cpp_type".to_string(),
ty: Type::Primitive(PrimitiveType::Custom("FString")),
},
ClassField {
offset: 64,
size: 16,
name: "names".to_string(),
ty: Type::Array(Box::new(Type::Name)),
},
ClassField {
offset: 80,
size: 4,
name: "cpp_form_raw".to_string(),
ty: Type::Primitive(PrimitiveType::U32),
},
],
methods: vec![],
};
let _uenum = sdk.inject_type(uenum).expect("uenum");
let ustruct = Class {
is_class: true,
size: 144,
@ -524,13 +555,13 @@ pub(crate) fn inject_coreuobject_types(sdk: &mut Sdk) {
offset: 48,
size: 8,
name: "super_struct".to_string(),
ty: Type::Primitive(PrimitiveType::Custom("Option<NonNull<UStruct>>")),
ty: Type::Primitive(PrimitiveType::Custom("Option<UStruct>")),
},
ClassField {
offset: 56,
size: 8,
name: "children".to_string(),
ty: Type::Primitive(PrimitiveType::Custom("Option<NonNull<UField>>")),
ty: Type::Primitive(PrimitiveType::Custom("Option<UField>")),
},
ClassField {
offset: 64,
@ -548,18 +579,117 @@ pub(crate) fn inject_coreuobject_types(sdk: &mut Sdk) {
methods: vec![],
};
let ustruct = sdk.inject_type(ustruct).expect("ustruct");
let uproperty = Class {
is_class: true,
size: 144,
name: "Property".to_string(),
full_name: "Class CoreUObject.Property".to_string(),
super_class: Some(unsafe { ufield.cast() }),
fields: vec![
ClassField {
offset: 48,
size: 4,
name: "array_dimensions".to_string(),
ty: Type::Primitive(PrimitiveType::I32),
},
ClassField {
offset: 52,
size: 4,
name: "element_size".to_string(),
ty: Type::Primitive(PrimitiveType::I32),
},
ClassField {
offset: 56,
size: 8,
name: "property_flags".to_string(),
ty: Type::Primitive(PrimitiveType::U64),
},
ClassField {
offset: 64,
size: 2,
name: "rep_index".to_string(),
ty: Type::Primitive(PrimitiveType::I16),
},
ClassField {
offset: 68,
size: 8,
name: "rep_notify_function".to_string(),
ty: Type::Name,
},
ClassField {
offset: 76,
size: 4,
name: "offset".to_string(),
ty: Type::Primitive(PrimitiveType::I32),
},
],
methods: vec![],
};
let _uproperty = sdk.inject_type(uproperty).expect("uproperty");
let ufunction = Class {
is_class: true,
size: 176,
name: "Function".to_string(),
full_name: "Class CoreUObject.Function".to_string(),
super_class: Some(unsafe { ustruct.cast() }),
fields: vec![ClassField {
offset: 144,
size: 4,
name: "function_flags".to_string(),
ty: Type::Primitive(PrimitiveType::U32),
}],
fields: vec![
ClassField {
offset: 144,
size: 4,
name: "function_flags".to_string(),
ty: Type::Primitive(PrimitiveType::U32),
},
ClassField {
offset: 148,
size: 2,
name: "rep_offset".to_string(),
ty: Type::Primitive(PrimitiveType::U16),
},
ClassField {
offset: 150,
size: 1,
name: "num_params".to_string(),
ty: Type::Primitive(PrimitiveType::U8),
},
ClassField {
offset: 152,
size: 2,
name: "params_size".to_string(),
ty: Type::Primitive(PrimitiveType::U16),
},
ClassField {
offset: 154,
size: 2,
name: "return_value_offset".to_string(),
ty: Type::Primitive(PrimitiveType::U16),
},
ClassField {
offset: 156,
size: 2,
name: "rpc_id".to_string(),
ty: Type::Primitive(PrimitiveType::U16),
},
ClassField {
offset: 158,
size: 2,
name: "rpc_response_id".to_string(),
ty: Type::Primitive(PrimitiveType::U16),
},
ClassField {
offset: 160,
size: 8,
name: "first_propert_to_init".to_string(),
ty: Type::Primitive(PrimitiveType::Custom("Option<UProperty>")),
},
ClassField {
offset: 168,
size: 8,
name: "func".to_string(),
ty: Type::Primitive(PrimitiveType::Custom("Option<NonNull<()>>")),
},
],
methods: vec![],
};
let _ufunction = sdk.inject_type(ufunction).expect("ufunction");