Commit Graph

152 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
2a4d886834 Removed unnecessary inline forward declarations from ClassViewerModule.h.
#rb trivial
#rnx
#preflight 628e4d19f622d972b58a17b4

[CL 20365984 by sebastian nordgren in ue5-main branch]
2022-05-25 11:55:35 -04:00
robert manuszewski
f8a812a32f Converting hardcoded short class/enum names to pathnames ahead of ANY_PACKAGE removal
#rb trivial
#jira UE-99463
#preflight 6288fd998828ea88c8aef3d0

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 20314896 via CL 20314897 via CL 20314903 via CL 20314904
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v948-20297126)

[CL 20315214 by robert manuszewski in ue5-main branch]
2022-05-22 10:30:02 -04:00
Lauren Barnes
6248f8d412 Replacing legacy EditorStyle calls with AppStyle
#preflight 6272a74d2f6d177be3c6fdda
#rb Matt.Kuhlenschmidt

#ROBOMERGE-OWNER: Lauren.Barnes
#ROBOMERGE-AUTHOR: lauren.barnes
#ROBOMERGE-SOURCE: CL 20057269 via CL 20070159 via CL 20072035 via CL 20072203
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
#ROBOMERGE-CONFLICT from-shelf

[CL 20105363 by Lauren Barnes in ue5-main branch]
2022-05-09 13:12:28 -04:00
aditya ravichandran
fd8c7427fe ClassViewerFilter: Make the class Display Name searchable
#jira UE-148980
#rb lauren.barnes
#preflight 626bfcca53253f874bcfed3d

#ROBOMERGE-AUTHOR: aditya.ravichandran
#ROBOMERGE-SOURCE: CL 20029032 via CL 20031505 via CL 20031560 via CL 20031594
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20035083 by aditya ravichandran in ue5-main branch]
2022-05-03 19:48:30 -04:00
Matt Peters
7ad238a806 AssetRegistry includes (Engine/Source): change #include "AssetData.h" -> #include "AssetRegistry/AssetData.h", and similar for the other moved AssetRegistry headers.
#rb Zousar.Shaker
#rnx
#preflight 6270509a220f89f0ad573030

[CL 20016982 by Matt Peters in ue5-main branch]
2022-05-02 18:06:48 -04:00
tom noonan
c9db409d04 Repopulating ClassViewer cache when scripts have finished compiling in the editor
[REVIEW] [at]dave.belanger, [at]markus.breyer, [at]tim.tillotson
#preflight 6238534fec68595f3b765664

#ROBOMERGE-AUTHOR: tom.noonan
#ROBOMERGE-SOURCE: CL 19450408 via CL 19451892 via CL 19453489 via CL 19456017 via CL 19456412
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v933-19451510)

[CL 19461500 by tom noonan in ue5-main branch]
2022-03-21 20:11:48 -04:00
jason stasik
6ea7870869 Refresh ClassViewers when global filter changes
#rb dave.belanger
#preflight 62168c46476ef5d8a2080bb2

#ROBOMERGE-AUTHOR: jason.stasik
#ROBOMERGE-SOURCE: CL 19100950 via CL 19107952 via CL 19107988 via CL 19108043 via CL 19110201
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19151626 by jason stasik in ue5-main branch]
2022-02-25 13:29:24 -05:00
ben hoffman
f65413b333 Remove an ensure that was in place to track down where REINST classes were being placed into the class viewer. The reason has been found and we know how to fix it so the ensure can be removed.
#jira UE-129601
#rb marc.audy
#preflight 6202e4db7e40979d33ba3bf5
#lockdown julien.marchand

#ROBOMERGE-AUTHOR: ben.hoffman
#ROBOMERGE-SOURCE: CL 18911492 in //UE5/Release-5.0/... via CL 18919343 via CL 18920536
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v916-18915374)

[CL 18920778 by ben hoffman in ue5-main branch]
2022-02-09 12:52:53 -05:00
dave belanger
2fd1a2b44e Fixes to properly show cooked blueprints in the class viewer
#rb Matt.Peters,Phillip.Kavan
#preflight 61f1775df8088a3d298ca305

#ROBOMERGE-AUTHOR: dave.belanger
#ROBOMERGE-SOURCE: CL 18742703 via CL 18744252 via CL 18744418 via CL 18744598 via CL 18745697 via CL 18746283
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18746508 by dave belanger in ue5-main branch]
2022-01-26 17:31:19 -05:00
ben hoffman
9752bef15c Prevent REINST classes from being allowed in a class viewer. This bug does not happen consistently, so I've added an ensure to hopefully track down how it is happening.
#jira UE-129601
#rb trivial
#rnx
#preflight 61eb3408e4313f36f02ce8cf

#ROBOMERGE-AUTHOR: ben.hoffman
#ROBOMERGE-SOURCE: CL 18699800 in //UE5/Release-5.0/... via CL 18699814 via CL 18699830
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18699845 by ben hoffman in ue5-main branch]
2022-01-21 19:00:39 -05:00
phillip kavan
4266aae5f3 Add non-imported class type filtering to the "Add Component" type selection UI in the Blueprint editor.
Additionally auto-import any namespace associated with the selected component class type when a new component is added.

Change summary:
- Modified the component type registry to internally create/store unloaded BP data to assist with unloaded BP component type filtering.
- Added FEditorClassUtils::GetImplementedInterfaceClassPathsFromAsset() to move BP interface asset tag processing into a shared utility API.
- Modified SComponentClassCombo to work with IClassViewFilter-style filtering and added a filter options menu (currently only visible when namespace filtering features are enabled via CVar).
- A few minor modifications/additions to SSubobjectEditor/SSubobjectBlueprintEditor to assist with interfacing with the owning FBlueprintEditor context for filtering, updating etc.

#jira UE-133294
#rb Ben.Hoffman
#preflight 61b7c0601a4451f7ba1d0c46

#ROBOMERGE-AUTHOR: phillip.kavan
#ROBOMERGE-SOURCE: CL 18449755 in //UE5/Release-5.0/... via CL 18449768
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18449772 by phillip kavan in ue5-release-engine-test branch]
2021-12-13 17:39:02 -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
7f517562d5 Merge from Release-Engine-Staging @ 17438845 to Release-Engine-Test
This represents UE4/Main @17430120 and Dev-PerfTest @17437669

[CL 17439044 by aurel cordonnier in ue5-release-engine-test branch]
2021-09-06 12:23:53 -04:00
matt peters
8b7bda67fe #jira UE-121508
FClassHierarchy::PopulateClassHierarcy: Refactor for robustness.
Instead of creating a tree for classes-from-blueprint and a tree for classes-from-loaded-UClass, create a single map from ClassPathName to node, and populate the data-from-blueprint and data-from-loaded-Uclass on the same node, and then create a tree from that map.
#rb JeanFrancois.Dube
#rnx

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

[CL 17262941 by matt peters in ue5-release-engine-test branch]
2021-08-22 22:12:31 -04:00
helge mathee
50ba7cd2cc SClassViewer: Skip hidden classes
Opening the class viewer widget was causing a crash for hidden classes created by Control Rig.

#rb audit
#jira na
[FYI] lauren.barnes

#ROBOMERGE-SOURCE: CL 17029201 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v845-17028103)

[CL 17029202 by helge mathee in ue5-release-engine-test branch]
2021-08-03 08:52:59 -04:00
iniside
8224c0498c PR #8168: Allow Selection of base class for Widget Blueprint (Contributed by iniside)
#rb daren.cheng
#jira UE-118900
#preflight 61032d69431c7800018d2a42

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

[CL 17003030 by iniside in ue5-release-engine-test branch]
2021-07-29 19:55:44 -04:00
phillip kavan
9ce0f3f518 Fix for non-unity build.
#rnx
#jira UE-108316
#rb none (trivial)

#ROBOMERGE-SOURCE: CL 16629076 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v831-16623017)

[CL 16629082 by phillip kavan in ue5-release-engine-test branch]
2021-06-10 16:11:27 -04:00
phillip kavan
1b6914ca4b Extends the class viewer module to support multiple custom class filters along with an optional associated view option flag.
Additional changes:
- Deprecates the previous method for specifying a singular custom class viewer filter and updates all existing occurrences of this pattern in engine code.
- Extends the property editor utilities interface to expose custom class filter(s) that can be applied to the class picker widget used for editing class property values.
- Adds an implementation of this interface to SDetailsView such that additional class filter(s) can now be configured to be applied to all underlying class property nodes.

#jira UE-108316
#rb Lauren.Barnes
#preflight 60c2102e8ae8960001110d50

#ROBOMERGE-OWNER: phillip.kavan
#ROBOMERGE-AUTHOR: phillip.kavan
#ROBOMERGE-SOURCE: CL 16623084 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v831-16623017)
#ROBOMERGE-CONFLICT from-shelf

[CL 16623246 by phillip kavan in ue5-release-engine-test branch]
2021-06-10 10:40:50 -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
lauren barnes
072d8cbdd6 Updating SWizard to new styles - impacts Profile Wizard, Niagara New Asset wizards, and New Class Dialog. New Class Dialog updated to new style guidelines/using new widget types
#jira UETOOL-2453
#rb Louise.Rasmussen
#lockdown Simon.Tourangeau
#preflight 606e06cf7ce9ca0001968135

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

[CL 15950032 by lauren barnes in ue5-main branch]
2021-04-07 22:11:49 -04:00
louise rasmussen
825c64a6f5 Level Editor Menu Re-org, Part 1
#JIRA UETOOL-3039
#rb Lauren.Barnes
#lockdown Simon.Tourangeau
#preflight 606b8e0315d4190001b1698b

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

[CL 15924652 by louise rasmussen in ue5-main branch]
2021-04-05 19:11:24 -04:00
Tim Smith
a2237e050d LiveCoding Re-instancing
LIMITATIONS:

1) Re-instancing will only update UClass instance data.
2) Adding and removing properties should only be done towards the end of a class or structure and can not be followed by complex data types.
3) Adding and removing properties from a base class should not be done if a derived class contains complex data types.

KNOWN ISSUES:

1) Changes to enumerations and structures will not be reflected in existing blueprints.  However, adding new nodes to the blueprint will show the updated enumeration or structure.
2) If a class contains an enumeration or structure as a member, the class will not be re-instanced if enumeration or structure is changed.

CHANGES:

1) LiveCodingServer
1a) Modified to always execute certain static instances during load.
1b) Modified to exclude the _Statics static structures to avoid patching to old copies.

2) Added support for LiveCoding reinstancing
2a) Refactored deferred registration system for UClass, UEnum, and UScriptStruct to use a common system that works for normal game, hot reload and live coding.
2b) Type specific version check data is possible (i.e. enum doesn't have a size)
2c) Single registration static for UClass
2d) Single registration class for all types that is just a blind forward to API.
2e) Static and dynamic registrations use different API entry points to avoid having overloaded argument lists that just apply to one or the other.
2f) Shims for older API

3) New common "Reload" system to avoid using HotReload code.
3a) Support common delegates regardless of who is reloading/reinstancing.
3b) Re-instancing code moved from HotReload to Kismet2 (where the bulk of the re-instance code already existed).
3c) Modified PyWrapper to use new helper class instead of depending on HotRelaod
3d) Added WITH_RELOAD which is defined if HotReload or LiveCoding is enabled.
3e) Modifed existing code to use new #define and delegates.

Robert did the review on the changes covered by Part 2.  Remaining changes are all straightforward.

#rb robert.manuszewski
#jira UE-74493

[CL 15736777 by Tim Smith in ue5-main branch]
2021-03-18 08:13:59 -04:00
Marc Audy
cac1fe0019 Merge UE5/Release-Engine-Staging @ CL# 15299266 to UE5/Main
This represents UE4/Main @ CL# 15277572

[CL 15299962 by Marc Audy in ue5-main branch]
2021-02-03 14:57:28 -04:00
Marc Audy
4c1bb11c29 Merge UE5/Release-Engine-Staging to UE5/Main @ 14548662
This represents UE4/Main @ 14525125 + cherrypicked fixes
#skipundocheck

[CL 14551026 by Marc Audy in ue5-main branch]
2020-10-22 19:19:16 -04:00