Commit Graph

235 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
JeanFrancois Dube
ebb09132c3 World Partition: added getter/setter for default HLOD layer and made member public.
#rb none
#preflight 628e24ddf838ce975c7c2332
#rnx

[CL 20363079 by JeanFrancois Dube in ue5-main branch]
2022-05-25 09:01:27 -04:00
rex hill
5bec86c5b0 Sort save packages with maps first
#preflight 62850d56614041edb7858ecf
#rb dave.belanger

#ROBOMERGE-AUTHOR: rex.hill
#ROBOMERGE-SOURCE: CL 20266107 via CL 20266167 via CL 20266341 via CL 20266364
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20269447 by rex hill in ue5-main branch]
2022-05-18 18:03:11 -04:00
JeanFrancois Dube
0ba969b0d7 World Partition: fix crash when creating a Level Instance.
#rb richard.malo
#preflight none
#rnx

[CL 20243263 by JeanFrancois Dube in ue5-main branch]
2022-05-17 11:02:02 -04:00
JeanFrancois Dube
0914d8cad4 World Partition: added last loaded location volumes support.
#rb philippe.deseve, richard.malo
#preflight 6282a7bfc57a894cf696d649
#rnx

[CL 20230435 by JeanFrancois Dube in ue5-main branch]
2022-05-16 16:04:30 -04:00
JeanFrancois Dube
13ea13eb8f World Partition Editor Hash:
- Unbound octree now stores hierarchical editor cells instead of leaves, this greatly reduce the number of needed editor cells for very large worlds.
- Implemented loading regions support to replace editor cells loading, in preparation for bookmark regions.

Tested against a 2000KMx2000km world + various internal projects and demos.

#rb patrick.enfedaque, richard.malo
#preflight 628239b5cf7e4667a97e3fe0

[CL 20222133 by JeanFrancois Dube in ue5-main branch]
2022-05-16 08:08:40 -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
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
wouter burgers
af6798af32 SourceControl: Prevent unnecessary asset saves.
When choosing Check-In on a directory in the Content Browser, PromptForCheckoutAndSave is called with a list of all loaded packages that reside in that directory hierarchy by FAssetFolderContextMenu::ExecuteSCCCheckIn with bCheckDirty=true and bPromptToSave=true. However, if none of the given packages is dirty, the end result would be that all packages would be saved instead of none of the packages being saved. This is unfortunate as source control systems will -unnecessarily- end up considering those assets as changed.

#jira none
#review
#preflight 624b16ddf4217035fab6fdfb

[CL 19621627 by wouter burgers in ue5-main branch]
2022-04-05 03:22:10 -04:00
richard malo
c4ed1fac4d Level Instance now support Partitioned worlds with disabled streaming.
Newly created Level Instances setups the worlds to be partitioned with disabled streaming.
This is in preparation of adding DataLayer support inside Level Instances.
#rb jeanfrancois.dube, patrick.enfedaque
#preflight 624739b2f73c316f680a8a0a

#ROBOMERGE-AUTHOR: richard.malo
#ROBOMERGE-SOURCE: CL 19606194 via CL 19606267 via CL 19606278
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v938-19570697)

[CL 19607375 by richard malo in ue5-main branch]
2022-04-04 08:20:34 -04:00
jeanfrancois dube
9aabdf23c3 World Partition UE5 default experience:
- Added option 'DisableStreaming' in the World Partition convert commandlet to allow disabling streaming for converted maps.
- Added flag 'bEnableStreaming' for partitioned worlds that can be used to disable streaming but keep key features such as OFPA and Data Layers.
- In this mode, the streaming generation acts as standard level streaming and can be enabled at any time by the user.
- This mode is enabled by default for new partitioned maps created from the empty template or the open world template.
- The World Partition convert commandlet will now duplicate the default HLOD layers setup.
- Show a hint in the World Partition window that streaming is disabled.
- When disabling streaming from the UI, show a dialog to warn the user about the implications of the change.
- When enabling streaming for the first time, show a dialog to warn the user that the world is about to be set up for streaming.
- When saving a map, don't duplicate its HLOD setup unless it's a template map.
- Includes changes from MattK: `Allow external object details customizations to hide the root object node`.
- TODO: Convert all template maps from the Games project to use World Partiton with streaming disabled using the new 'DisableStreaming' commandlet option.

#rb patrick.enfedaque, richard.malo
#jira UE-143719
#preflight

#ROBOMERGE-AUTHOR: jeanfrancois.dube
#ROBOMERGE-SOURCE: CL 19149766 in //UE5/Release-5.0/... via CL 19150115
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19160979 by jeanfrancois dube in ue5-main branch]
2022-02-25 19:31:01 -05:00
Alexis Matte
5a6a855dcd Scene node will now only serialize the local transform, all SetGlobalTransform functions has been removed.
Fix scene import when there is no specified factory
The scene node specialtype attribute can now be a "Transform" type. This allow the generic scene pipeline to found group transform node.

#jira none
#rb jeanmichel.dignard, richard.talbotwatkin
#rnx
#preflight 62066e4054003c49ad37c388

[CL 18951547 by Alexis Matte in ue5-main branch]
2022-02-11 09:16:05 -05:00
patrick enfedaque
e0185ce840 WorldPartition: Fix drag & drop move WP World item in ContentBrowser
#jira UE-114002
#rb jeanfrancois.dube
#preflight 620539010c64e1822f3f21b5
#lockdown aurel.cordonnier
#rnx

#ROBOMERGE-AUTHOR: patrick.enfedaque
#ROBOMERGE-SOURCE: CL 18937248 in //UE5/Release-5.0/... via CL 18937639 via CL 18938300
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)

[CL 18938372 by patrick enfedaque in ue5-main branch]
2022-02-10 12:22:07 -05:00
JeanMichel Dignard
0a111a1b4e Interchange
- Interchange now adds its supported extensions to the import and import into level file pickers.
- Added a GetSupportedFormats on the Interchange Translators.
- UInterchangeTranslatorBase::CanImportSource now defaults to checking the file extension and matching it against the supported formats.
- Added a translator type on the translators to indicate what type of data they can translate (assets or actors for now). This is used by the file pickers to indicate which extensions they want to gather.
#preflight 6203eaca174d2620c3c11d9b

[CL 18919107 by JeanMichel Dignard in ue5-main branch]
2022-02-09 11:43:32 -05:00
patrick enfedaque
8030e2d922 WorldPartition: Newly created maps now prompt for save if they were modified
#jira UE-140149

#rb jeanfrancois.dube
#preflight 61f416f77a7f0d39dde9c5a4

#ROBOMERGE-AUTHOR: patrick.enfedaque
#ROBOMERGE-SOURCE: CL 18772658 in //UE5/Release-5.0/... via CL 18772669 via CL 18773117
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18773152 by patrick enfedaque in ue5-main branch]
2022-01-28 12:16:30 -05:00
patrick enfedaque
e53cc4aa19 ContentBrowser: Better support for Delete/Copy/Rename operations on World Partition worlds
- FScopedLoadAllExternalObjects object that can be used to force the loading of all external actors of a WP world to allow those operations to succeed. (for larger worlds commandlet should be used)
- ContentBrowser operation like: Delete, Duplicate, Rename, Move, Copy use this new scope
- World Partition worlds are no longer loaded on right-click context menu.
- Note: change was done with explicit scopes to only address specific use cases and limit the impact of this CL. It could become a default behavior in later versions.

#jira UE-140032, UE-114002

#rb richard.malo, jeanfrancois.dube, rex.hill
#preflight 61f2b479800734b52da816b4

#ROBOMERGE-AUTHOR: patrick.enfedaque
#ROBOMERGE-SOURCE: CL 18753910 in //UE5/Release-5.0/... via CL 18753926 via CL 18756993
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18757308 by patrick enfedaque in ue5-main branch]
2022-01-27 14:11:04 -05:00
marc audy
6553e6cd0a Remove as much C++ deprecation as possible up to 4.17 (along with a few scattered removals from beyond)
#preflight 61eefc77ba69a4fdb220bf23

#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 18712765 in //UE5/Release-5.0/... via CL 18712784 via CL 18713147
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18713191 by marc audy in ue5-main branch]
2022-01-24 15:07:48 -05:00
patrick enfedaque
df3ebca57c - Add a UActorDescContainer::LoadAllActors
- Replace code in FileHelpers with a call to replace the current loading code

#rb jeanfrancois.dube
#preflight 61df1cdf484d866ec019151e

#ROBOMERGE-AUTHOR: patrick.enfedaque
#ROBOMERGE-SOURCE: CL 18587042 in //UE5/Release-5.0/... via CL 18587050 via CL 18587071
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Test -> Main) (v899-18417669)

[CL 18587106 by patrick enfedaque in ue5-main branch]
2022-01-12 13:34:53 -05:00
patrick enfedaque
9a6af1c540 WorldPartition:
- Reset InstancingContext on UWorld::Rename (SaveAs)
- Update Loaded editor cells after rename

#jira UE-138762
#rb jeanfrancois.dube
#preflight 61dd8f5df33c0754171e46b6

#ROBOMERGE-AUTHOR: patrick.enfedaque
#ROBOMERGE-SOURCE: CL 18571747 in //UE5/Release-5.0/... via CL 18571758
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18571766 by patrick enfedaque in ue5-release-engine-test branch]
2022-01-11 10:01:42 -05:00
richard malo
481f65fe16 New Actor Folders objects.
- When enabled, folders are actual objects : modifying a folder won't affect actors (more compliant with OFPA).
- Enabled by default for World Partition and Level Instances.
- Can be enabled on regular levels (experimental feature 'Use Actor Folder Objects').
- If Level uses OFPA, ActorFolders will also be saved in their own package (but will use __ExternalObjects__ root folder).
- In a future refactoring, external actors will also be moved in the same root folder.
- Generalized saving object in an external package (different from its outer package)
- World outliner supports old folders and new actor folder objects : Levels using the actor folder objects will show a root Level node (like Level Instances).
#rb patrick.enfedaque, jeanfrancois.dube
#preflight 61d84b356511bc498e5cb858

#ROBOMERGE-AUTHOR: richard.malo
#ROBOMERGE-SOURCE: CL 18543443 in //UE5/Release-5.0/... via CL 18543482
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18543525 by richard malo in ue5-release-engine-test branch]
2022-01-07 10:01:19 -05:00
patrick enfedaque
65a56b5eb3 WorldPartition SaveAs: Remove need for Uninitialize/Duplicate/Initialize by rebasing the WorldPartition in UWorld::Rename
#rb jeanfrancois.dube

#ROBOMERGE-AUTHOR: patrick.enfedaque
#ROBOMERGE-SOURCE: CL 18443100 in //UE5/Release-5.0/... via CL 18445043
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18445207 by patrick enfedaque in ue5-release-engine-test branch]
2021-12-13 13:32:52 -05:00
luc eygasier
0c38da3fdb Prevent saved file to be added to PackagesNotToPromptAnyMore when added to UncontrolledChangelist.
Allows save window to be displayed again if a file is reverted in UncontrolledChangelist.

#jira UE-136350
#rb Sebastien.Lussier

#changelist validated

#ROBOMERGE-AUTHOR: luc.eygasier
#ROBOMERGE-SOURCE: CL 18431729 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v897-18405271)
#ROBOMERGE[STARSHIP]: UE5-Release-Engine-Staging Release-5.0

[CL 18431749 by luc eygasier in ue5-release-engine-test branch]
2021-12-10 12:43:15 -05:00
julien stjean
0af64fa975 Stop interchange from being use when using asset tool api by defaul (when interchange is on). (Otherwise this would break some licensees made code and scripts). Those who want an async import should use the interchange api preferably.
Added a setting to turn on interchange import only for textures.

The selection of the asset in the content is now only done after all the asset are imported when using interchange.

#jira UETOOL-4291
#rb Alexis.Matte
#preflight 619e34820141b3c6da5b98d0

#ROBOMERGE-AUTHOR: julien.stjean
#ROBOMERGE-SOURCE: CL 18282733 in //UE5/Release-5.0/... via CL 18282735
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18282740 by julien stjean in ue5-release-engine-test branch]
2021-11-24 08:15:47 -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
wouter burgers
c29a3ed07b SourceControl: Disable the 'Check Out Selected' button if the SourceControl system does not use checkout (the operation will always fail).
#jira none
[at]marco.anastasi [at]stuart.hill [at]Thomas.Sarkanen

#ROBOMERGE-AUTHOR: wouter.burgers
#ROBOMERGE-SOURCE: CL 18205539 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v895-18170469)

[CL 18205565 by wouter burgers in ue5-release-engine-test branch]
2021-11-16 07:40:07 -05:00