Commit Graph

31 Commits

Author SHA1 Message Date
robert manuszewski
d1443992e1 Deprecating ANY_PACKAGE.
This change consists of multiple changes:

Core:
- Deprecation of ANY_PACKAGE macro. Added ANY_PACKAGE_DEPRECATED macro which can still be used for backwards compatibility purposes (only used in CoreUObject)
- Deprecation of StaticFindObjectFast* functions that take bAnyPackage parameter
- Added UStruct::GetStructPathName function that returns FTopLevelAssetPath representing the path name (package + object FName, super quick compared to UObject::GetPathName) + wrapper UClass::GetClassPathName to make it look better when used with UClasses
- Added (Static)FindFirstObject* functions that find a first object given its Name (no Outer). These functions are used in places I consider valid to do global UObject (UClass) lookups like parsing command line parameters / checking for unique object names
- Added static UClass::TryFindType function which serves a similar purpose as FindFirstObject however it's going to throw a warning (with a callstack / maybe ensure in the future?) if short class name is provided. This function is used  in places that used to use short class names but now should have been converted to use path names to catch any potential regressions and or edge cases I missed.
- Added static UClass::TryConvertShortNameToPathName utility function
- Added static UClass::TryFixShortClassNameExportPath utility function
- Object text export paths will now also include class path (Texture2D'/Game/Textures/Grass.Grass' -> /Script/Engine.Texture2D'/Game/Textures/Grass.Grass')
- All places that manually generated object export paths for objects will now use FObjectPropertyBase::GetExportPath
- Added a new startup test that checks for short type names in UClass/FProperty MetaData values

AssetRegistry:
- Deprecated any member variables (FAssetData / FARFilter) or functions that use FNames to represent class names and replaced them with FTopLevelAssetPath
- Added new member variables and new function overloads that use FTopLevelAssetPath to represent class names
- This also applies to a few other modules' APIs to match AssetRegistry changes

Everything else:
- Updated code that used ANY_PACKAGE (depending on the use case) to use FindObject(nullptr, PathToObject), UClass::TryFindType (used when path name is expected, warns if it's a short name) or FindFirstObject (usually for finding types based on user input but there's been a few legitimate use cases not related to user input)
- Updated code that used AssetRegistry API to use FTopLevelAssetPaths and USomeClass::StaticClass()->GetClassPathName() instead of GetFName()
- Updated meta data and hardcoded FindObject(ANY_PACKAGE, "EEnumNameOrClassName") calls to use path names

#jira UE-99463
#rb many.people
[FYI] Marcus.Wassmer
#preflight 629248ec2256738f75de9b32

#codereviewnumbers 20320742, 20320791, 20320799, 20320756, 20320809, 20320830, 20320840, 20320846, 20320851, 20320863, 20320780, 20320765, 20320876, 20320786

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 20430220 via CL 20433854 via CL 20435474 via CL 20435484
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v949-20362246)

[CL 20448496 by robert manuszewski in ue5-main branch]
2022-06-01 03:46:59 -04:00
sebastian nordgren
73e62b9ef3 JsonConfig shared pointers are now passed by const&.
Added tests for EditorConfig.

#review-20127432 @aditya.ravichandran, @lauren.barnes
#preflight 628764ef2c34da686ac74123
#rnx

[CL 20292425 by sebastian nordgren in ue5-main branch]
2022-05-20 06:20:33 -04:00
sebastian nordgren
8eafe4f70e Editor configs now correctly diff against the CDO when serializing.
Previously, I had assumed that FProperty::InitializeValue() would initialize a simple member (eg. a float) to the correct value, but this appears not to be the case, rather values are zero-initialized and the CDO stores the correct default values. In the case of structs, InitializeStruct() does in fact initialize correctly.

However, this means that we can't use GetMutableDefault() to get an instance of the UObject, since then we're changing what we're diffing against and serialize no values. Changed the usages of this pattern to use singletons instead.

#jira UE-141150
#review-19900014 @lauren.barnes, @aditya.ravichandran
#preflight 6267fa44a021c91a50f26a65

[CL 19919719 by sebastian nordgren in ue5-main branch]
2022-04-26 10:20:56 -04:00
jason stasik
e4651fb422 Fix non-unity error
#rb none
#preflight skip

#ROBOMERGE-AUTHOR: jason.stasik
#ROBOMERGE-SOURCE: CL 19798556 via CL 19798564 via CL 19798565
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v939-19570697)

[CL 19809766 by jason stasik in ue5-main branch]
2022-04-19 11:44:04 -04:00
jason stasik
a650434255 Log error when JSON deserializer fails to parse an EditorConfig file
#rb rex.hill,eric.knapik
#preflight 6259d6ca201cdc3ec501a4b3

#ROBOMERGE-AUTHOR: jason.stasik
#ROBOMERGE-SOURCE: CL 19794091 via CL 19798053 via CL 19798283 via CL 19798394
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v939-19570697)

[CL 19809723 by jason stasik in ue5-main branch]
2022-04-19 11:41:31 -04:00
marc audy
cff01aa9fa Added support for native FProperty setters and getters.
Setters and getters are native functions called by FProperties when setting property values with *_InContainer functions.
Setters and getter function names can be manually specified with Setter = Func and Getter = Func keywords inside of UPROEPRTY macro but they will also be automatically parsed if the name is not explicitly specified if the setter or getter function name matches SetPropertyName and GetPropertyName pattern.
The latter behavior can be disabled in UHT's DefaultEngine.ini by setting AutomaticSettersAndGetters=False.
ImportText and ExportTextItem functions have been deprecated and should be replaced with *_InContainer or *_Direct variants.

#rb Steve.Robb
#preflight 6210a377a83e0bcefd03d9e1

#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 19070318 via CL 19098059 via CL 19104650 via CL 19104661 via CL 19110012
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19147839 by marc audy in ue5-main branch]
2022-02-25 10:39:39 -05:00
jason stasik
57ecabf8c0 Expose AddSearchDirectory and LoadFromFile for EditorConfigs
#rb sebatian.nordgren

#ROBOMERGE-OWNER: jason.stasik
#ROBOMERGE-AUTHOR: jason.stasik
#ROBOMERGE-SOURCE: CL 18795736 via CL 18797126 via CL 18803326 via CL 18803348 via CL 18803356 via CL 18804424 via CL 18821688
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v908-18788545)

[CL 18822076 by jason stasik in ue5-main branch]
2022-02-02 02:16:18 -05:00
sebastian nordgren
c7a3bb7e05 Details Favorites are now stored between sessions again.
The EPropertyFilter property was introduced, but FEditorMetadataOverrides was not updated to make use of it.

#jira UE-139483
#rb paul.chipchase
#preflight 61e7fe4d614a721b0c3dfbef

#ROBOMERGE-AUTHOR: sebastian.nordgren
#ROBOMERGE-SOURCE: CL 18656991 in //UE5/Release-5.0/... via CL 18656997 via CL 18656999
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18657002 by sebastian nordgren in ue5-main branch]
2022-01-19 07:42:49 -05:00
sebastian nordgren
79cb0d89b4 EditorConfig map handling fixed so that holes in the map won't cause an ensure - you must check IsValidIndex before accessing any value.
#review-18237997 @lauren.barnes
#preflight 619b8f2ecb49ea94932131ed

[CL 18258550 by sebastian nordgren in ue5-main branch]
2021-11-22 10:10:08 -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
sebastian nordgren
e53720fc25 UEditorConfigBase now won't load or save if GEditor is not initialized.
#rb lauren.barnes

[CL 16483466 by sebastian nordgren in ue5-main branch]
2021-05-27 09:29:38 -04:00
sebastian nordgren
b2cfdb4696 Speculative fix for crash when cooking and GetEditorSubsystem() returns nullptr.
#rb aurel.cordonnier

[CL 16472540 by sebastian nordgren in ue5-main branch]
2021-05-26 14:08:19 -04:00
sebastian nordgren
bb68ab3b81 Added UClass & UStruct versions of FEditorConfigSubsystem::TryGetRoot*.
#review-16449464 @lauren.barnes
#preflight

[CL 16467398 by sebastian nordgren in ue5-main branch]
2021-05-26 08:27:40 -04:00
sebastian nordgren
5072dd8816 UEditorConfigSubsystem now has helpers to directly load into UObjects based on the EditorConfig= class metadata, as well as filtering of properties tagged with the EditorConfig property metadata.
#rb tim.smith, lauren.barnes
#jira UETOOL-3448
#preflight 60aceb521d02bb000144bc59

[CL 16447508 by sebastian nordgren in ue5-main branch]
2021-05-25 10:01:03 -04:00
sebastian nordgren
7c3dd67e2d Fixed potential nullptr deref caught by static analysis.
#jira UE-112078

[CL 15874231 by sebastian nordgren in ue5-main branch]
2021-03-31 09:12:16 -04:00
lauren barnes
04f2e6cd99 Adding init values to FEditorConfigTestKeyStruct and FEditorConfigTestStruct
#jira UE-110790
#rb trivial
[FYI] Sebastian.Nordgren
#pf 60622a2125b98e00011377ed

#ROBOMERGE-SOURCE: CL 15854920 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v786-15839533)

[CL 15857226 by lauren barnes in ue5-main branch]
2021-03-29 20:49:29 -04:00
sebastian nordgren
6d625d8bcb Added code for favoriting custom builders.
Also added code for favoriting groups, but this currently isn't enabled work since header widgets suffer from the same problem as custom widget rows do - their SWidget is created in place rather than through a function call, so thus cannot be duplicated. This needs some more thought, but the code for storing them is the same either way.

#jira UE-109586
#rb lauren.barnes

[CL 15802120 by sebastian nordgren in ue5-main branch]
2021-03-24 12:54:49 -04:00
sebastian nordgren
97672bcf73 Added missing includes causing non-Unity compile failures.
#jira UE-108416

#ROBOMERGE-SOURCE: CL 15407208 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15407227 by sebastian nordgren in ue5-main branch]
2021-02-15 11:55:20 -04:00
sebastian nordgren
526239e053 Actually fixed PVS warnings in JsonConfig.cpp.
#jira UE-108183
#rb paul.chipchase

#ROBOMERGE-SOURCE: CL 15406850 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15406853 by sebastian nordgren in ue5-main branch]
2021-02-15 11:02:57 -04:00
sebastian nordgren
6cb594177e Changed conditions in JsonConfig.cpp to satisfy PVS.
#jira UE-108183

#ROBOMERGE-SOURCE: CL 15375842 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15378755 by sebastian nordgren in ue5-main branch]
2021-02-10 15:19:35 -04:00
sebastian nordgren
109c631cfc Added checks to satisfy PVS.
#jira UE-107941

#ROBOMERGE-SOURCE: CL 15356313 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15360316 by sebastian nordgren in ue5-main branch]
2021-02-08 17:05:30 -04:00
sebastian nordgren
1b2a1ceacb Added some includes to fix non-unity compile issues.
#jira UE-107391
#rb trivial

#ROBOMERGE-SOURCE: CL 15311900 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15311992 by sebastian nordgren in ue5-main branch]
2021-02-04 05:47:39 -04:00
sebastian nordgren
f037fcf1ed Fixed incorrect operator usage in FJsonConfig picked up by static analysis.
#jira UE-107503
#rb paul.chipchase

[CL 15279024 by sebastian nordgren in ue5-main branch]
2021-02-02 05:20:46 -04:00
sebastian nordgren
27f0137dec Fixed non-unity build errors due to missing semicolon after IMPLEMENT_MODULE.
Removed unnecessary includes and overrides in EditorConfigModule.

#rb paul.chipchase
#jira UE-107391

[CL 15269585 by sebastian nordgren in ue5-main branch]
2021-02-01 06:01:10 -04:00
Zousar Shaker
3b4c8fc1c5 Automated wrapped object pointer upgrade for Engine + ShooterGame + ShooterGame referenced plugins
#rb none

[CL 15224650 by Zousar Shaker in ue5-main branch]
2021-01-27 17:40:25 -04:00