This delegate was previously useless as it would run when the PythonScriptPlugin module was loaded, which meant that no-one could bind to it
#rb none
[CL 10795922 by Jamie Dale in Main branch]
- Fixed Python container wrappers leaking transient property instances.
- PyUtil::TPropOnScope will manage an optionally owned property instance, deleting it if required when it goes out-of-scope.
- Fixed Python container wrappers crashing during GC due to calling FReferenceCollector::AddReferencedObjects passing a FProperty-based type.
- Fixed Python delegate wrappers crashing when called with arguments due to checking Children rather than ChildProperties.
#rb Robert.Manuszewski
#rnx
[CL 10791312 by Jamie Dale in Main branch]
- This fixes out params being at the wrong offsets causing the copy of the data to look at the wrong locations
#rb: merge
[CL 8385886 by Joe Graf in Dev-VR branch]
Added error handling for a missing self paramter in a python function that is exposed to the engine
Added missing class flags that allow a python object to expose a python function as a BP node without having to be present in the native base class
Update the Blueprint action database when a python class is loaded after the list has already been populated
#rb: merge
[CL 8214003 by Joe Graf in Dev-VR branch]
#rb Jamie.Dale
#jira none
#ROBOMERGE-SOURCE: CL 7558761 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v372-7473910)
[CL 7558771 by johan duparc in Main branch]
The old logic for dealing with the parameters within the Unreal function thunk (UPythonGeneratedClass::CallPythonFunction and UPythonCallableForDelegate::CallPythonNative) assumed that Stack.Locals would be set-up correctly for input, and could be written to for output. This isn't true, as Stack.Locals is populated by a memcpy in UObject::ProcessEvent (so isn't safe to write to for non-POD data), and Blueprints just pass along their existing frame data since they skip the call to ProcessScriptFunction (as Python generated functions are marked FUNC_Native).
This change adds a common thunk processing function (PyGenUtil::InvokePythonCallableFromUnrealFunctionThunk) which is used when calling into Python from an Unreal function thunk. This function steps the data off the stack frame for each property, copying input data to Python, and building the output chain (FOutParmRec) from output data addresses. This matches what the UHT generated thunk does for native functions (via P_GET_PROPERTY and P_GET_PROPERTY_REF), as well as what ProcessScriptFunction does for functions with Blueprint bytecode.
#jira UE-75405
#jira UE-75449
[FYI] Rex.Hill
#rb Dan.OConnor
#ROBOMERGE-OWNER: lina.halper
#ROBOMERGE-AUTHOR: jamie.dale
#ROBOMERGE-SOURCE: CL 7064650 in //UE4/Release-4.23/... via CL 7064651
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim) (v367-6836689)
[CL 7124296 by jamie dale in Dev-Anim branch]