Commit Graph

73 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
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
ben hoffman
d36fd1b7cc Fix static analysis warning in subobject subsystem
#jira UE-149811
#rb trivial
#rnx
#preflight 6261c0f06119a1a496c3e677

[CL 19856185 by ben hoffman in ue5-main branch]
2022-04-21 17:21:26 -04:00
ben hoffman
3138e1a21c Fix a PVS warning in subobject editor
#jira none
#rb trivial
#rnx
#preflight skip

[CL 19557039 by ben hoffman in ue5-main branch]
2022-03-30 10:39:46 -04:00
ben hoffman
a53ba31ea0 Keep absolute location when reparenting a subobject in blueprints
#jira UE-147382
#rb marc.audy
#rnx
#preflight 62433961323cb7b991f0f01d

[CL 19544913 by ben hoffman in ue5-main branch]
2022-03-29 13:18:01 -04:00
ben hoffman
e629c84afb Only create a new default subobject when destroying a component if the owner's class is not native. Native owner classes do not have to have a DefaultSceneRoot when you drag in the C++ class directly from the content browser into the level.
#jira UE-130740
#rb marc.audy
#preflight 623a33f4b3653cf6afe52385

[CL 19482791 by ben hoffman in ue5-main branch]
2022-03-23 14:41:32 -04:00
marc audy
4ab0c3a671 Fix crashing when undoing a native component class change in a blueprint
Fix asserts as a result of replacing actor components without going through proper register/unregister lifecycle
Move logic for component class changing out of the details customization and in to the subobject data subsystem
#jira UE-114303
#preflight 621a7ca51d1c5017996c2a01
#rb ben.hoffman
#lockdown julien.marchand

#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 19179312 in //UE5/Release-5.0/... via CL 19180540
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19204194 by marc audy in ue5-main branch]
2022-03-01 14:57:56 -05:00
ben hoffman
11d9f2db5b Fix an ensure that was caused when adding a runtime subobject to an editor only subobject.
#jira none
#rb marc.audy
#rnx
#preflight 61dc99354455f00ccd2eae99

#ROBOMERGE-AUTHOR: ben.hoffman
#ROBOMERGE-SOURCE: CL 18564998 in //UE5/Release-5.0/... via CL 18565017
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18565049 by ben hoffman in ue5-release-engine-test branch]
2022-01-10 16:02:14 -05: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
ben hoffman
c968dafbd0 [Subobject Editor] Allow deletion of subobjects that are the default scene root so that they get properly replaced with a "DefaultSceneRoot" in the subobject blueprint editor.
#jira UE-125204
#rb phillip.kavan
#rnx

#ROBOMERGE-AUTHOR: ben.hoffman
#ROBOMERGE-SOURCE: CL 17621477 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)
#ROBOMERGE[STARSHIP]: UE5-Release-Engine-Staging Release-5.0

[CL 17621478 by ben hoffman in ue5-release-engine-test branch]
2021-09-24 11:06:45 -04:00
ben hoffman
0775db0dbb [Subobject Editor] Use the correct previous subobject transform when conforming a subobject to it's new parent during reparenting. Previously it was incorrectly using the same "Dropped On" subobject (which would be the new parent) thus always giving it a relative position/rotation/scale of 0 when conforming.
#jira UE-126632
#rb colin.mcginley
#rb benjamin.fox
#rnx

#ROBOMERGE-AUTHOR: ben.hoffman
#ROBOMERGE-SOURCE: CL 17588190 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)

[CL 17588217 by ben hoffman in ue5-release-engine-test branch]
2021-09-21 17:03:29 -04: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
ben hoffman
1394f1b0f2 Set the parent of non-scene components correctly when converting an instance to a blueprint
#jira UE-120632
#rb todo
#rnx
#p4v-preflight-copy 17105167

#ROBOMERGE-SOURCE: CL 17107844 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v854-17104634)

[CL 17107929 by ben hoffman in ue5-release-engine-test branch]
2021-08-09 17:18:52 -04:00
ben hoffman
1eb5090127 Do not allow copying or duplicating subobjects with the name of "DefaultSceneRoot". This will prevent confusing renaming situations where the DefaultSceneRoot could be deleted, but still be preventing other subobjects from being named that
#jira UE-119104
#rb todo
#rnx
#preflight 60ff101a47c93a00010d9d2e

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

[CL 16961064 by ben hoffman in ue5-release-engine-test branch]
2021-07-26 16:58:12 -04:00
ben hoffman
2d502dcd91 When pasting a subobject, check to see if the desired parent is a scene component before allowing it to be the target of the paste. This prevents the incorrect parenting to the Actor root in the case of copy/pasting the default scene root.
#jira UE-119104
#rb trivial
#rnx

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

[CL 16960176 by ben hoffman in ue5-release-engine-test branch]
2021-07-26 15:40:01 -04:00
jamie dale
669facc986 Fixed some more places incorrectly testing against NAME_SIZE (as it includes the null terminator)
#rb none
#rnx

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

[CL 16938868 by jamie dale in ue5-release-engine-test branch]
2021-07-23 13:17:09 -04:00
ben hoffman
c649f6ad6c Change the behavior when pasting subobjects to attach to the selected subobject's parent instead of the subobject itself. This makes the pasting behavior between the blueprint and level instance editor the same.
#jira UE-118256
#rb trivial
#rnx

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

[CL 16901350 by ben hoffman in ue5-release-engine-test branch]
2021-07-20 16:00:57 -04:00
ben hoffman
1aa36d7898 Only try to find a scene component target to attach to if the pasted component is a scene component. Non-Scene components can only be attached to the root actor. This solves an issue where a pasted non-scene component could be incorrectly attached to the default scene root.
#jira UE-117883
#rb justin.hare
#rnx

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

[CL 16900254 by ben hoffman in ue5-release-engine-test branch]
2021-07-20 15:09:45 -04:00
zousar shaker
d55f79222e Wrapped ObjectPtr upgrade refresh for Engine + ShooterGame
#rb none
#preflight 60f6411c35476b00018dd12c

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

[CL 16892876 by zousar shaker in ue5-release-engine-test branch]
2021-07-20 00:24:38 -04:00
ben hoffman
4612c508e4 Add a fallback method of determining the instanced component to use as an asset override in the event that a subobjec thas been added but is not a part of the generated class yet. Do this by checking if the archetype of the GEN_VARIABLE subobject and one on the instance are the same.
#jira UE-119138
#rb trivial
#rnx
#preflight 60f0b58a57b3020001337e09

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

[CL 16869384 by ben hoffman in ue5-release-engine-test branch]
2021-07-15 19:43:19 -04:00
ben hoffman
3cc5f3f1bb Check not only the SimpleConstructionScript's DefaultSceneRootNode, but also the SceneRootComponentTemplate when determining if a subobject is the default scene root. This handles cases where the DefaultSceneRoot node has been updated (like when you drag/drop a new scene component onto it in the Subobject Editor)
#jira UE-117876
#rb marc.audy
#rnx

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

[CL 16854923 by ben hoffman in ue5-release-engine-test branch]
2021-07-14 16:38:11 -04:00
ben hoffman
aa2e0d9b84 Check if the old scene root was the default scene root that is generated by every BP to determine if it should be deleted or not. This makes the behavior consistent with the old SCS Editor
#jira UE-117876
#rb trivial
#rnx

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

[CL 16854715 by ben hoffman in ue5-release-engine-test branch]
2021-07-14 16:24:38 -04:00
ben hoffman
07d1805279 CIS fix. Remove ParentObjData from an if statement because there is already a "check" on the variable above. Having it in the if statement was causing other uses of it to flag PVS
#jira none
#rb trivial
#rnx

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

[CL 16854439 by ben hoffman in ue5-release-engine-test branch]
2021-07-14 16:06:40 -04:00
ben hoffman
9433745359 Add an additional check when determining the default scene root to see if a native subobject is the root of it's owning actor.
#jira UE-117126
#rb trivial
#rnx
#preflight 60ee0c9119a00600011f491a

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

[CL 16844694 by ben hoffman in ue5-release-engine-test branch]
2021-07-13 19:29:19 -04:00