Commit Graph

257 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
CarlMagnus Nordin
3d5a2052dc AsyncLoading2: Add support for having multiple PackageStore backends
#preflight 6296fc872a1851b4ccae7e39
#rb pj.kack

[CL 20447121 by CarlMagnus Nordin in ue5-main branch]
2022-06-01 02:12:33 -04:00
danny couture
373563955a Fix potential deadlock by moving the ForEachObject sections that locks the hash table outside of another lock
#rnx
#rb Francis.Hurteau
#preflight 628f6b0680139a518168c9e5

[CL 20378034 by danny couture in ue5-main branch]
2022-05-26 08:06:42 -04:00
Matt Peters
2eca89a984 UClass: Move the UClass pointers to the cppclass's AddReferencedObject function onto a new type FUObjectCppClassStaticFunctions that allows us to easily add new static functions that are reflected in the same way.
Move the existing DeclareCustomVersions function which was declared as a virtual UObject function into a static UObject function using this method.

#rb Steve.Robb
#rnx
#preflight 62827303046b81bf93c15ef2

[CL 20226876 by Matt Peters in ue5-main branch]
2022-05-16 13:00:04 -04:00
pj kack
70b097884c GC: Fix incorrect assert in GCObjectReferencer (fallout from 19898875).
Assertion failed: GObjUnhashUnreachableIsInProgress || GObjIncrementalPurgeIsInProgress || !IsGarbageCollecting() [File:.\Runtime/CoreUObject/Private/Misc/GCObjectReferencer.cpp]
With the new default lock behavior it should be allowed to add and remove references outside of the reachability analysis scope.
With the legacy lock behavior checking IsGarbageCollectingAndLockingUObjectHashTables() means the same thing as IsGarbageCollecting().
When the legacy lock behavior is deleted this check can be simplified to check(!IsGarbageCollectingAndLockingUObjectHashTables()).

#jira UE-150654
#rb francis.hurteau, danny.couture, robert.millar
#rnx

#ROBOMERGE-OWNER: pj.kack
#ROBOMERGE-AUTHOR: pj.kack
#ROBOMERGE-COMMAND: _robomerge[bot4] UE5-MAIN
#ROBOMERGE-SOURCE: CL 20038707 via CL 20038717 via CL 20038721 via CL 20038724 via CL 20038728
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20038836 by pj kack in ue5-main branch]
2022-05-04 04:20:42 -04:00
brian bekich
d993e84cb6 Fix handling of invalid package paths from clients
#jira UE-145643
#rb ryan.gerleve

#ROBOMERGE-AUTHOR: brian.bekich
#ROBOMERGE-SOURCE: CL 19785177 via CL 19785195 via CL 19792886 via CL 19793235 via CL 19793656
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v939-19570697)

[CL 19809617 by brian bekich in ue5-main branch]
2022-04-19 11:36:06 -04:00
Jon Nabozny
8a888b2953 Add a console command that can be used to resolve Soft Object Paths in Editor, and change the warning for broken Soft Object Paths to include the Referencing Package Name.
#preflight 623ba15f0820efd094ae9d74

[CL 19488066 by Jon Nabozny in ue5-main branch]
2022-03-23 18:51:45 -04:00
Dave Belanger
1d6a6d0109 Look for uncooked packages first in FPackageName::DoesPackageExist
#rb CarlMagnus.Nordin,Matt.Peters
#jira FORT-450257
#preflight 6231e70f640ce2a64a0a03a7

[CL 19409139 by Dave Belanger in ue5-main branch]
2022-03-16 14:32:06 -04:00
paul chipchase
1f90b5c58b Allow stand alone programs to opt into full FPackagePath functionality even if the program is not compiling with the editor.
#rb Matt.Peters
#rnx
#preflight 622b69320a614dcb0cf998d3

- This is useful for stand alone programs that want to compile with core and coreuobject but don't want to compile against the editor/engine.
- To make use of this the program should add 'GlobalDefinitions.Add("UE_SUPPORT_FULL_PACKAGEPATH=1")' to it's Target.cs .
- If the program does not define UE_SUPPORT_FULL_PACKAGEPATH then it will default to WITH_EDITOR which was the pre-existing behavior.

[CL 19370946 by paul chipchase in ue5-main branch]
2022-03-14 03:39:21 -04:00
Zousar Shaker
b23efc3a7b Reduce overhead from high frequency redundant access tracking caused by resolving the same TObjectPtr repeatedly. Saves 3 minutes from large project full cook.
#rb matt.peters
#jira UE-144430
#preflight 622843e68138f020c641085e
#ushell-cherrypick of 19283269 by Zousar.Shaker

[CL 19322440 by Zousar Shaker in ue5-main branch]
2022-03-09 12:44:16 -05:00
steve robb
288f3de432 Fixes for the implicit conversion of ints and chars to TCHARs in UTF-8 mode.
#rb trivial
#preflight 621ed0b4e15c51d8c5e5d081

#ROBOMERGE-OWNER: steve.robb
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 19219816 via CL 19220283 via CL 19220288 via CL 19223679
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19227684 by steve robb in ue5-main branch]
2022-03-02 15:30:50 -05:00
steve robb
33c800a605 TEXT(""_SV) changed to TEXTVIEW("") for UTF-8 support.
#rb trivial

#ROBOMERGE-OWNER: steve.robb
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 19135062 via CL 19136099 via CL 19136620 via CL 19138526
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19155676 by steve robb in ue5-main branch]
2022-02-25 15:48:16 -05:00
carlmagnus nordin
73a67c95d9 Renamed EPackageLocationFilter enums from Cooked/Uncooked to IoDispatcher/FileSystem
Cleaned up duplicated logic between DoesPackageExist and DoesPackageExistEx
#rnx
#preflight 61f3b9f2801201ab387e6e50
#rb per.larsson

#ROBOMERGE-AUTHOR: carlmagnus.nordin
#ROBOMERGE-SOURCE: CL 18770321 in //UE5/Release-5.0/... via CL 18770330 via CL 18770438
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18770443 by carlmagnus nordin in ue5-main branch]
2022-01-28 08:48:13 -05:00
carlmagnus nordin
a201cd8e12 Fixed up uses of FIoDispatcher::IsInitialized() so that they work correctly also when there's a mix of cooked packages in iostore and uncooked packages on disk
FIoDispatcher::IsInitialized() will now return true if it exists (which is almost always)
Renamed FArchive::IsUsingEventDrivenLoader() to IsLoadingFromCookedPackage and based it on the PKG_Cooked flag
#rnx
#rb pj.kack
#preflight 61f3ab6f74510448a6740570

#ROBOMERGE-AUTHOR: carlmagnus.nordin
#ROBOMERGE-SOURCE: CL 18769198 in //UE5/Release-5.0/... via CL 18769204 via CL 18769272
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18769277 by carlmagnus nordin in ue5-main branch]
2022-01-28 04:29:58 -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
vincent gauthier
8b51660453 Localization: Resolving conflicting Ids in LOC macros
#jira UE-136397
#rb none
#preflight 61eebe505e0414e6ec1e5a19

#ROBOMERGE-AUTHOR: vincent.gauthier
#ROBOMERGE-SOURCE: CL 18708506 in //UE5/Release-5.0/... via CL 18708530 via CL 18708683
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18708694 by vincent gauthier in ue5-main branch]
2022-01-24 10:13:12 -05:00
matt peters
c728a62762 #jira UE-139613
Add diagnostic logs when FilenameToLongPackageName fails. Update InternalFilenameToLongPackageName to also try comparing absolute paths.
#rb Josh.Adams
#rnx
#preflight 61e9b2ae963d324152f73877

#ROBOMERGE-AUTHOR: matt.peters
#ROBOMERGE-SOURCE: CL 18679510 in //UE5/Release-5.0/... via CL 18679543 via CL 18679580
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v902-18672795)

[CL 18680756 by matt peters in ue5-main branch]
2022-01-20 16:00:35 -05:00
sebastian thomeczek
a0634569e4 Add PackageName.DumpMointPoints, PackageName.RegisterMountPoint and PackageName.UnregisterMountPoint console commands
#rb Matt.Peters
#jira none
#preflight 61e85709e543b8254570de6b

#ROBOMERGE-AUTHOR: sebastian.thomeczek
#ROBOMERGE-SOURCE: CL 18661225 in //UE5/Release-5.0/... via CL 18661265 via CL 18661293
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18661327 by sebastian thomeczek in ue5-main branch]
2022-01-19 13:38:57 -05:00
francis hurteau
d262daac13 Added support to Loose File Package Writer to write multiple package output per input
Added similar support to the package store manifest
Zen Store support will be added separately
Added some extra data to linker object resources to be used by the iostore package optimizer to properly support optional package chunks.

Multiple cooking outputs is used to support "optional objects" which are editor data package exports that would be put in separate iostore containers than the normal cooked game content.

#jira UE-129801
#rb Matt.Peters, CarlMagnus.Nordin
#preflight 61e5d3bb873f2ea48f48166c

#ROBOMERGE-AUTHOR: francis.hurteau
#ROBOMERGE-SOURCE: CL 18639742 in //UE5/Release-5.0/... via CL 18639751 via CL 18639758
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18639762 by francis hurteau in ue5-main branch]
2022-01-18 09:56:23 -05:00
matt peters
fb786c7e8b #jira UE-138902
Split FPackageName's initialization into two events so that FPackageName::TryConvertFilenameToLongPackageName can be called with limited functionality before pluginmanager and coreobject have been initialized.
#preflight 61e58568006b17a6865ac944
#rb Graeme.Thornton
#rnx

#ROBOMERGE-AUTHOR: matt.peters
#ROBOMERGE-SOURCE: CL 18634271 in //UE5/Release-5.0/... via CL 18634294 via CL 18634301
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18637425 by matt peters in ue5-main branch]
2022-01-18 04:35:15 -05:00
nuno leiria
549ce36cdf Misc changes required to build consoles as modules
#preflight 61df20d0484d866ec0192dc6
#rb david.harvey

#ROBOMERGE-AUTHOR: nuno.leiria
#ROBOMERGE-SOURCE: CL 18616274 in //UE5/Release-5.0/... via CL 18616284 via CL 18616293
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18616300 by nuno leiria in ue5-main branch]
2022-01-14 07:01:20 -05:00
rex hill
9e3db015d6 Fix MountPointExists to include mount points that are not plugins such as Game and Engine
#rb dave.belanger, graeme.thornton, matt.peters
#preflight 61df07e5484d866ec0170bd1

#ROBOMERGE-AUTHOR: rex.hill
#ROBOMERGE-SOURCE: CL 18587214 via CL 18588261 via CL 18588271 via CL 18588276 via CL 18588584 via CL 18588597 via CL 18588607
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Test -> Main) (v899-18417669)

[CL 18588618 by rex hill in ue5-main branch]
2022-01-12 15:16:46 -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
devin doucette
a4c3b2cf75 Replaced use of TStringView::SizeType with int32 or equivalent casts
SizeType will be deprecated in a subsequent change.

#rb Zousar.Shaker
#rnx
#preflight 61b8dde95d1b7767a13a5a70

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18456907 in //UE5/Release-5.0/... via CL 18456915
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v898-18417669)

[CL 18456926 by devin doucette in ue5-release-engine-test branch]
2021-12-14 14:07:35 -05:00
jeanfrancois dube
c9f007348b Fix potential race conditions introduced in optimization from 17401227.
#rb sebastien.lussier
#preflight none

#ROBOMERGE-AUTHOR: jeanfrancois.dube
#ROBOMERGE-SOURCE: CL 17475619 via CL 17926111 via CL 18361953 via CL 18362033
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18362101 by jeanfrancois dube in ue5-release-engine-test branch]
2021-12-02 18:56:51 -05:00