Skip to content

Commit 378fe7d

Browse files
committed
also support native structs as return types
1 parent 2f72762 commit 378fe7d

File tree

1 file changed

+37
-1
lines changed

1 file changed

+37
-1
lines changed

Source/UnrealEnginePython/Private/UEPyModule.cpp

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3258,6 +3258,42 @@ UFunction *unreal_engine_add_function(UClass *u_class, char *name, PyObject *py_
32583258
{
32593259
prop = NewObject<UIntProperty>(function, UTF8_TO_TCHAR(p_name), RF_Public);
32603260
}
3261+
else if ((PyTypeObject *)py_return_value == &ue_PyFVectorType)
3262+
{
3263+
UStructProperty *prop_struct = NewObject<UStructProperty>(function, UTF8_TO_TCHAR(p_name), RF_Public);
3264+
prop_struct->Struct = TBaseStructure<FVector>::Get();
3265+
prop = prop_struct;
3266+
}
3267+
else if ((PyTypeObject *)py_return_value == &ue_PyFRotatorType)
3268+
{
3269+
UStructProperty *prop_struct = NewObject<UStructProperty>(function, UTF8_TO_TCHAR(p_name), RF_Public);
3270+
prop_struct->Struct = TBaseStructure<FRotator>::Get();
3271+
prop = prop_struct;
3272+
}
3273+
else if ((PyTypeObject *)py_return_value == &ue_PyFLinearColorType)
3274+
{
3275+
UStructProperty *prop_struct = NewObject<UStructProperty>(function, UTF8_TO_TCHAR(p_name), RF_Public);
3276+
prop_struct->Struct = TBaseStructure<FLinearColor>::Get();
3277+
prop = prop_struct;
3278+
}
3279+
else if ((PyTypeObject *)py_return_value == &ue_PyFColorType)
3280+
{
3281+
UStructProperty *prop_struct = NewObject<UStructProperty>(function, UTF8_TO_TCHAR(p_name), RF_Public);
3282+
prop_struct->Struct = TBaseStructure<FColor>::Get();
3283+
prop = prop_struct;
3284+
}
3285+
else if ((PyTypeObject *)py_return_value == &ue_PyFTransformType)
3286+
{
3287+
UStructProperty *prop_struct = NewObject<UStructProperty>(function, UTF8_TO_TCHAR(p_name), RF_Public);
3288+
prop_struct->Struct = TBaseStructure<FTransform>::Get();
3289+
prop = prop_struct;
3290+
}
3291+
else if ((PyTypeObject *)py_return_value == &ue_PyFQuatType)
3292+
{
3293+
UStructProperty *prop_struct = NewObject<UStructProperty>(function, UTF8_TO_TCHAR(p_name), RF_Public);
3294+
prop_struct->Struct = TBaseStructure<FQuat>::Get();
3295+
prop = prop_struct;
3296+
}
32613297
}
32623298
else if (ue_PyUObject *py_obj = ue_is_pyuobject(py_return_value))
32633299
{
@@ -3286,7 +3322,7 @@ UFunction *unreal_engine_add_function(UClass *u_class, char *name, PyObject *py_
32863322
}
32873323
}
32883324
}
3289-
// TODO add native types (like vectors, rotators...)
3325+
32903326
if (prop)
32913327
{
32923328
prop->SetPropertyFlags(CPF_Parm | CPF_OutParm | CPF_ReturnParm);

0 commit comments

Comments
 (0)