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 is the first phase of allowing Blueprint types to be generated for Python, which must be accessed via unreal.get_blueprint_generated_types(...) as asset names are not guaranteed to be unique, so they're not added to the unreal module.
Once a type has been generated for Python, it will be updated if the underlying asset is changed. Should the asset be deleted then the Python type will be reset to clean state and become mostly unusable.
This change also ensures that the Unreal type pointers referenced by the Python meta-data are ARO'd correctly. This will cause a warning if you try and delete an asset with a type used by Python.
MyEnum = unreal.get_blueprint_generated_types('/Game/MyEnum') # This can also accept multiple arguments or a list, and will return a tuple of types
print(MyEnum.MY_ENTRY)
#jira UE-81862, UE-81859
#rb Lauren.Barnes
[CL 10227467 by Jamie Dale in Dev-Editor branch]
The existing Python code has been ported to use this, and this can also be used by Blueprints (or other C++ setting properties) to allow property changes that emit change notifications.
#jira UE-77388
#rb Chris.Gagnon
[CL 9706346 by Jamie Dale in Dev-Editor branch]