Commit Graph

223 Commits

Author SHA1 Message Date
patrick laflamme
9cfdc160f5 Fixed Python plugin to allow resolving USTRUCT Make/Break functions specifed with 'HasNativeMake' and 'HasNativeBreak' later. This supports cases where the function are implemented in a C++ module that is loaded after the module declaring the USTRUCT. The implementation postpones resolving missing functions until FCoreDelegates::OnPostEngineInit is invoked. If one or more functions are still missing, corresponding error(s) are logged.
#jira UE-92057 - Investigate deferring the function resolution for Make/Break meta-data in Python
#rb Jamie.Dale
#preflight 61f84aa35a026d2d19b62c70

#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18796649 in //UE5/Release-5.0/... via CL 18797780 via CL 18798499
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v908-18788545)

[CL 18798615 by patrick laflamme in ue5-main branch]
2022-01-31 17:03:42 -05:00
patrick laflamme
b065712809 Fixed Python GIL (Global Interpreter Lock) deadlock while loading an asset.
- Released the GIL while loading or finding an asset.
  - Released the GIL while loading or finding an object.
  - Released the GIL while loading or finding packages.
  - Released the GIL while logging/flushing stdout/stderr from Python.

#rb Jamie.Dale
#preflight 61f2fb1d1f12674afbbf9933

#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18764878 via CL 18764883 via CL 18764890 via CL 18765457 via CL 18765586
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18765591 by patrick laflamme in ue5-main branch]
2022-01-27 19:16:00 -05:00
Patrick Laflamme
868b0d24be Instrumented Python plugin loading time and saved about 500ms to the total module startup time.
#rb Jamie.Dale
#preflight 61f1bba6be0f0e0a623e7697

[CL 18745211 by Patrick Laflamme in ue5-main branch]
2022-01-26 16:44:45 -05:00
patrick laflamme
98e5880317 Fixed the Editor Python Executor to parse and escape quotes for -ExecutePythonScript command line parameters to allow quoting python arguments containing spaces.
#jira UE-136852 - Running python script with -ExecutePythonScript doesn't allow passing python arguments with spaces
#rb Jamie.Dale

#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18405205 in //UE5/Release-5.0/... via CL 18405209
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v896-18170469)

[CL 18405211 by patrick laflamme in ue5-release-engine-test branch]
2021-12-08 09:14:28 -05:00
patrick laflamme
237e1cf8aa Fixed Python Plugin description mentioning 'UE4' rather than 'Unreal Editor' in the text displayed in the plugin selection page.
#rb trivial
[FYI] Jamie.Dale

#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18342729 in //UE5/Release-5.0/... via CL 18342818
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18342895 by patrick laflamme in ue5-release-engine-test branch]
2021-12-01 14:33:53 -05:00
patrick laflamme
bb19374ec4 Fixed MakeTransform() function to take a default value for Scale parameter -> "static FTransform MakeTransform(FVector Location, FRotator Rotation, FVector Scale = FVector(1,1,1))"
- Removed the meta=(MakeStructureDefaultValue= "1,1,1") from the FTransform struct because Unreal Header Tool is already capable to deduce that from the MakeTransform() default C++ prameter.
  - Removed the meta=(Scale = "1,1,1") from MakeTransform UFUNCTION because that can be deduced by Unread Header Toold from the default C++ parameter.

Fixed Python code not invoking the a 'Make' function (declared with meta HasNativeMake on a USTRUCT) if no parameters were supplied to Python (ex. unreal.Transform() would not call the MakeTransform(...)).
  - In most case, not calling the Make function worked as expected, but the Make function could implement side effects, so always honor it.

Resaved BP macro assets using MakeTransform() with the default values. The default values saved as string with the asset changed from "1,1,1" to "1.000000,1.000000,1.000000" and this triggered a BP Compiler warning.

The following tests were performed:
  - In the Blueprint Editor, added a Make Transform node and ensured the default values for scale were (1, 1, 1)
  - In the Blueprint Editor, created a User Defined Struct, added as a member a Transform, ensured the default values for the transform scale were (1, 1, 1)
  - Added a Python regression unit tests to ensure unreal.Transform() takes the default scale value as (1, 1, 1) if the scale parameter is not provided.
  - Created a Blueprint Macro Libraries with a Macro calling MakeTransform() with default parameters, saved it, applied the fix, got the warning, refreshed the node, resaved the macro and ensured the macro used the correct default scale.

#jira UE-133741 - MakeStructureDefaultValue is not used in Python
#rb Jamie.Dale

#ROBOMERGE-OWNER: patrick.laflamme
#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18337929 via CL 18338143 via CL 18338146 via CL 18338492 via CL 18338517
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18338531 by patrick laflamme in ue5-release-engine-test branch]
2021-12-01 09:27:11 -05:00
patrick laflamme
3997d12563 Prevented adding non-existing directories to Python 'sys.path'
- This makes Python a bit faster at startup (according to my benchmark) and reduce noise looking at the sys.path.

#jira UE-135129 - Avoid adding non-existing directory to Python 'sys.path'
#rb Jamie.Dale

#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18324422 in //UE5/Release-5.0/... via CL 18324431
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18324435 by patrick laflamme in ue5-release-engine-test branch]
2021-11-30 09:43:25 -05:00
patrick laflamme
612889c784 Removed C++ code from PythonScriptPlugin refering to Python 2.x.
#jira UE-135651 - Remove Python 2.7 from UE5 (Phase 2)
#rb Jamie.Dale
#preflight 619cfb96c3287aab27f02ddc

#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18270005 in //UE5/Release-5.0/... via CL 18270039
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18270053 by patrick laflamme in ue5-release-engine-test branch]
2021-11-23 10:12:09 -05:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00
aurel cordonnier
fc542f6cfd Merge from Release-Engine-Staging @ 18081189 to Release-Engine-Test
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971

[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
2021-11-07 23:43:01 -05:00
patrick laflamme
87e164b574 Exposed UEnum display name to Python through method get_display_name(). Ex: print(unreal.TextureCompressionSettings.TC_GRAYSCALE.get_display_name())
- Supported reading the enum entry display name set in C++ as well as the one injected from python with the [at]uenum annotation.
  - Added unit tests.

#jira UE-132375 - Add a way for python to get the friendly name of an enum value
#rb Jamie.Dale

#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 18019999 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v885-17909292)

[CL 18020038 by patrick laflamme in ue5-release-engine-test branch]
2021-11-02 11:34:25 -04:00
jeanmichel dignard
8a9d07083d Python: Fixed an issue where remove_callable wouldn't work if the callable was a method (vs a function).
PyObject ptr equality doesn't work for method objects as there's a new instance everytime.
Instead, compare the callables tp_call pointers and PyMethod_Self values for methods.

#rb Patrick.Laflamme, Jamie.Dale

#ROBOMERGE-AUTHOR: jeanmichel.dignard
#ROBOMERGE-SOURCE: CL 17981106 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v885-17909292)

[CL 17981189 by jeanmichel dignard in ue5-release-engine-test branch]
2021-10-29 11:32:36 -04:00
aurel cordonnier
a6e741e007 Merge from Release-Engine-Staging @ 17915896 to Release-Engine-Test
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035

[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-25 20:05:28 -04:00
aurel cordonnier
a12d56ff31 Merge from Release-Engine-Staging @ 17791557 to Release-Engine-Test
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485

[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-12 21:21:22 -04:00
patrick laflamme
9aa3d1c4ae Fixed static analyzer complaining about int/bool comparison in Python
- Used static_cast<bool>() to work with both python 3.7 and 3.9. The macro expression type changed from bool to int between the versions.

#jira UE-126618 - //UE5/Main - UE4 Static Analysis Win64 (PVS-Studio) - pyengine.cpp compares a bool type value with a value of 0
#rb Brooke.Hubert

#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 17523778 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17523850 by patrick laflamme in ue5-release-engine-test branch]
2021-09-15 14:25:05 -04:00
patrick laflamme
6a6f7b7560 Minor fixes to prepare for the upcoming Python 3.9.7 update.
- Tested those fixes with Python 3.7.x (current) and 3.9.7 (upcoming) on Windows and Mac

#jira UE-124978 - Upgrade to Python 3.9.x
#rb Jamie.Dale

#ROBOMERGE-AUTHOR: patrick.laflamme
#ROBOMERGE-SOURCE: CL 17491930 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17491945 by patrick laflamme in ue5-release-engine-test branch]
2021-09-13 10:43:11 -04:00
dan phillips
c4168d9c60 Added missing includes and forward declarations
Supplied by David.Bollo of The Coalition.
Fixes some non unity compile errors

[FYI] David.Bollo
#jira none

#ROBOMERGE-SOURCE: CL 17206575 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17206608 by dan phillips in ue5-release-engine-test branch]
2021-08-17 17:47:10 -04:00
andriy tylychko
6bf3101dcd deprecated FTicker and family and replaced by thread-safe FTSTicker
#jira UE-120090
#rb francis.hurteau


#ROBOMERGE-SOURCE: CL 17176325 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17176374 by andriy tylychko in ue5-release-engine-test branch]
2021-08-16 11:09:22 -04:00
jamie dale
44dc0680b2 Added a guard when converting to FName in Python, to verify the name fits within NAME_SIZE
[FYI] Malachi.Duncan

#ROBOMERGE-SOURCE: CL 16938846 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16938855 by jamie dale in ue5-release-engine-test branch]
2021-07-23 13:16:11 -04:00
jamie dale
da9ca8b7d8 Added missing __repr__ function to the basic Python wrapped types
[FYI] Malachi.Duncan

#ROBOMERGE-SOURCE: CL 16910247 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16910254 by jamie dale in ue5-release-engine-test branch]
2021-07-21 11:42:49 -04:00
jamie dale
63144c3236 Added support for per-plugin Python site-packages
Plugins can now add third-party Python scripts within their Content/Python/Lib/site-packages and Content/Python/Lib/{Platform}/site-packages folders, and these will be automatically available for import within UE.

#rb JeanMichel.Dignard, Timothy.Daoust

#ROBOMERGE-SOURCE: CL 16884142 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16884152 by jamie dale in ue5-release-engine-test branch]
2021-07-19 11:34:56 -04:00
matt kuhlenschmidt
8a71ad940c Minor adjustments to the output log drawer.
- ~ key now also works for python command boxes
- Improved tooltip for the output log drawer
- Cosmetic UI changes.

#ROBOMERGE-SOURCE: CL 16352021 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v804-16311228)

[CL 16352157 by matt kuhlenschmidt in ue5-release-engine-test branch]
2021-05-17 11:31:32 -04:00
aurel cordonnier
50944fd712 Merge UE5/RES @ 16162155 to UE5/Main
This represents UE4/Main @ 16130047 and Dev-PerfTest @ 16126156

[CL 16163576 by aurel cordonnier in ue5-main branch]
2021-04-29 19:32:06 -04:00
Jamie Dale
f3b5253145 Isolate the embedded Python interpreter from the general Python system environment
The following flags are now set when initializing the embedded Python interpreter:
 - Py_IgnoreEnvironmentFlag - Ignore PYTHONPATH when calculating sys.path.
 - Py_IsolatedFlag - Skip adding the user's site-packages directory to sys.path.

To counter the loss of PYTHONPATH, a new UE_PYTHONPATH environment variable is now available with the same rules as PYTHONPATH.

#jira UE-113583
#rb Rex.Hill

[CL 16064481 by Jamie Dale in ue5-main branch]
2021-04-20 14:53:29 -04:00
Marc Audy
01b7c9f4f5 Merge UE5/RES @ 15958325 to UE5/Main
This represents UE4/Main @ 15913390 and Dev-PerfTest @ 15913304

[CL 15958515 by Marc Audy in ue5-main branch]
2021-04-08 14:32:07 -04:00