Commit Graph

46 Commits

Author SHA1 Message Date
patrick enfedaque
b7eaad89dc WorldPartition: Add UActorDescContainerInstance/FWorldPartitionActorDescInstance which take transient/context data from UActorDescContainer/FWorldPartitionActorDesc leaving them as pure on disk representations.
- UActorDescContainerInstance contains: Transform, ContainerID, InstancingContext
- FWorldPartitionActorDescInstance contains: ResolvedDataLayers, RefCounts, Remapped Instanced actor path, Actor loading code

#rb JeanFrancois.Dube, Richard.Malo, Sebastien.Lussier
#tests editor, cook, pie, hlod builder, level instance, internal projects

[CL 30260359 by patrick enfedaque in ue5-main branch]
2023-12-12 06:59:42 -05:00
richard malo
6859ec0c2d Fixed rare crash in Data Layer outliner when binded to a null world
#rb jeanfrancois.dube
#jira UE-196436

[CL 28500190 by richard malo in ue5-main branch]
2023-10-05 11:14:39 -04:00
patrick enfedaque
a7398cc00d SceneOutliner: Optimize cost of FWorldPartitionActorDesc::IsLoaded call (which calls StaticFindObject). Use new FEditorLoadedActorCache helper instead.
12 calls to FActorHierarchy::CreateWorldChildren in a 55k actor map with 15k loaded actors goes from 5.1 seconds to 2.7 seconds

#rb richard.malo, jeanfrancois.dube
#rnx

[CL 27373897 by patrick enfedaque in ue5-main branch]
2023-08-25 07:43:32 -04:00
jeanfrancois dube
f6efc708f9 World Partition: added support for client and server only data layers activation.
- This can be used for data layers adding details on high end platforms.
- This can be used in content bundles with server-only data layers.

This is CL26804958 brought back with fixes.

#jira UE-176165, FORT-542185
#rb sebastien.lussier

[CL 27029196 by jeanfrancois dube in ue5-main branch]
2023-08-11 11:14:31 -04:00
patrick enfedaque
aee5dd80e2 DataLayer Outliner: Fix deleted actors showing as unloaded
#rb richard.malo
#rnx

[CL 26017729 by patrick enfedaque in ue5-main branch]
2023-06-15 12:44:13 -04:00
kirill zorin
de8db5ff76 Converting ARO-facing raw pointers to TObjectPtr ahead of raw pointer ARO API deprecation.
#rb zousar.shaker
#rb markus.breyer
#rb robert.manuszewski

#preflight 646391406b1406b54ab15460

[CL 25489627 by kirill zorin in ue5-main branch]
2023-05-16 10:52:49 -04:00
patrick enfedaque
3348e07dcf LevelInstance: Fix Skipped actor descs being displayed in outliner since CL 24422197
#rb richard.malo, sebastien.lussier
#preflight 640791f7aa00423335532974
#rnx

[CL 24560412 by patrick enfedaque in ue5-main branch]
2023-03-08 10:55:55 -05:00
patrick enfedaque
4217ec9c76 DataLayer Outliner: Fix WorldDataLayer item not being displayed when World doesn't yet have DL Instances
#rb richard.malo
#preflight 6406408bde14c9e34b8cd5e1

[CL 24538778 by patrick enfedaque in ue5-main branch]
2023-03-07 08:19:49 -05:00
jeanfrancois dube
b448744e87 Templated FWorldPartitionHelpers::GetWorldPartition so it's inlined and not recursive.
#rb richard.malo
#preflight 63ffe80fe32cdb7d9aee32c1

[CL 24484233 by jeanfrancois dube in ue5-main branch]
2023-03-02 12:12:52 -05:00
richard malo
6583fa5db3 Allow editing data layers of level instance when editing the level instance
- When editing level instance, only show loaded/unloaded actors of this level
- When editing level instance, don't prefix actor label with parent level instance(s)
- Replaced import data layer menu option by drag and dropping level instance data layers into main world AWorldDataLayers
- Removed menu option "Create Data Layer under <other> DataLayer" as it will never be allowed for DataLayerInstanceWithAsset since created without any valid DataLayerAsset.
- Disabled changing visibility and editor loading of DataLayerInstances of editing level instance
- Allow editing data layer of level instance when editing the level instance even when main world is not partitioned
- Changed font from bold to bold+italic on DataLayerInstances containing actors part of editor selection
- Removed suffix "- WorldDataLayers" on parent node of DataLayerInstances in the DataLayer Outliner
- Colorize and append "(Current)" to WorldDataLayer of editing Level Instance in the DataLayer Outliner
- Support Make Current on Level instance DataLayerInstances when editing level instance
#rb patrick.enfedaque
#jira UE-178410
#jira UE-177386
#preflight 63f8f0f19009dd70d7b87224

[CL 24441128 by richard malo in ue5-main branch]
2023-02-28 08:35:38 -05:00
philippe deseve
6df56def9a UDataLayerInstance can be outered to a Uobject other than AWorldDataLayers
Provide GetWorldDataLayer to Replace GetAWorldDataLayers
UObject might not have a level in its outerchain.
UDataLayerInstance::GetTypedOuter overloaded so compilation fails if done on UWorld, ULevel or AWorldDataLayer

#rb richard.malo

[CL 24344188 by philippe deseve in ue5-main branch]
2023-02-21 13:26:58 -05:00
richard malo
047bfb94b7 - Added UDataLayerManager which is local to each WorldPartition.
- This will allow instanced world partition maps to maintain their own Data Layer runtime states.
- Deprecated DataLayerSubsystem since DataLayerManager superseeds its functionality.
- Added helpers like UWorld::GetDataLayerManager and UWorldPartitionBlueprintLibrary::GetDataLayerManager which will automatically find the associated DataLayerManager for the object it's running the BP.
#rb jeanfrancois.dube, patrick.enfedaque, philippe.deseve

[CL 23938773 by richard malo in ue5-main branch]
2023-01-31 17:03:25 -05:00
Patrick Enfedaque
5a569ba2d8 Redo CL 23850205:
- Make FSceneOutlinerTreeItemID taking FGuid constructor explicit to find issues where wrong ID was passed in
- Convert DataLayer tree items to use the FArchiveMD5

#rb richard.malo, jeanfrancois.dube
#preflight 63d2d10f3656ea96dc9131da

[CL 23873707 by Patrick Enfedaque in ue5-main branch]
2023-01-26 15:05:37 -05:00
richard malo
0038a91e7f Fixed static analysis dereferencing null pointer in DataLayerHierarchy.cpp
#rb trivial

[CL 23673013 by richard malo in ue5-main branch]
2023-01-12 20:51:03 -05:00
richard malo
eeb4d65df4 Show child actors of child level instances even when editing a level instance
#rb patrick.enfedaque

[CL 23666583 by richard malo in ue5-main branch]
2023-01-12 13:42:23 -05:00
richard malo
b17431befd Fixed crashes when exiting the editor using "-execcmds=QUIT_EDITOR" (only happens is ContentBundle outliner and/or DataLayer Outliner are spawned)
#rb jeanfrancois.dube
#preflight 6377a5dc2a05dabce93a911e

[CL 23197153 by richard malo in ue5-main branch]
2022-11-18 12:03:41 -05:00
bryan sefcik
0837230669 Ran IWYU again on half of the Engine/Source/Editor/... source files.
#jira

[CL 21716414 by bryan sefcik in ue5-main branch]
2022-08-30 23:03:03 -04:00
philippe deseve
abbb36329e Display WorldDataLayers Tree Items for world data layers which are not the main world partitions but are empty.
Allows to add DataLayerInstances by right-click on WorldDataLayers when they are not a "main worldpartiton" world data layer
Fix IsSubWorldDataLayers working in pie/cooked build for non-"main world partitition data layers"

#rb richard.malo

[CL 21696488 by philippe deseve in ue5-main branch]
2022-08-30 02:22:25 -04:00
philippe deseve
875385177c Allow for a single WorldPartition to have multiple ActorDescContainer
Added FActorDescContainerCollection which can contains multiple UActorDescContainer
ActorDescContainer can be created to load ExternalFolder in various places for a world partition
WorldPartition no longer inherits UActorDescContainer and now inherits FActorDescContainerCollection
ActorsDesc are added to the right container on save based on their packagepath
HLODs generation only occurs on the Main WorldPartition Actors for the moment
Some WorldPartitionBuilders commandlets do not support having WorldPartitions with multiple ACtorDescContainer. In that case, the commandlet fails and outputs an error message.

#test cook AncientGame, cook city_sample, cook asteria_terrain, HLods generation on AncientGame, Level Instances workflow
#rb jeanfrancois.dube
#preflight 630ce860a416f6df25b74655

[CL 21691284 by philippe deseve in ue5-main branch]
2022-08-29 18:44:52 -04:00
philippe deseve
8227dee6aa Allow a world to contains multiple WorldDataLayers
Calls to retrieve data layers from the subsystem are now forwarded to a collection of WorldDataLayers
The collection forwards the call to the relevent WorldDataLayers

#rb richard.malo
#preflight 62bd9255b024a2608c311344
#test AncientGame, CitySample, Cook, PIE, -Game, Hlods

#ROBOMERGE-AUTHOR: philippe.deseve
#ROBOMERGE-SOURCE: CL 20894852 via CL 20894903 via CL 20894926
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v971-20777995)

[CL 20898599 by philippe deseve in ue5-main branch]
2022-06-30 13:21:53 -04:00
JeanFrancois Dube
f59630be43 Data Layers: fix "Iterating over Data Layers without a World Partition" when trying to refresh the data layers outliner for non-partitioned maps.
#rb richard.malo
#preflight none
#rnx

[CL 20574099 by JeanFrancois Dube in ue5-main branch]
2022-06-09 07:59:49 -04:00
richard malo
879c5c42c6 Added support of Data Layers inside Level Instances.
#rb jeanfrancois.dube, patrick.enfedaque, philippe.deseve
#jira UE-151266
#preflight 62796854a35fb5cb3f55e9e6

#ROBOMERGE-OWNER: richard.malo
#ROBOMERGE-AUTHOR: richard.malo
#ROBOMERGE-SOURCE: CL 20121141 via CL 20121608 via CL 20121618
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20122781 by richard malo in ue5-main branch]
2022-05-10 10:22:54 -04:00
philippe deseve
ed0f48629d DataLayer API to go through DataLayerSubsystem instead of AWorlDataLayers
Move DataLayers' EditorWorldSetting logic from DataLayerEditorSubsystem & WorldDataLayers to DataLayerSubsystem
Use DataLayerInstance::GetOuterWorldDataLayers instead of retrieving the WorldDataLayers from UWorld::GetWorldDataLayers instead
Rename UDataLayerSubsystem::GetDataLayerFromAsset to GetDataLayerInstanceFromAsset to be inline with the rest of the API
Preparation for multiple AWorldDataLayers existing in the same world

#rb richard.malo
#test PIE, SIE, -game, Editing flow, cooked game, Hlods generation
#preflight 627402a0ca0ad32a968422af

#ROBOMERGE-AUTHOR: philippe.deseve
#ROBOMERGE-SOURCE: CL 20060072 via CL 20060595 via CL 20060607
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20062765 by philippe deseve in ue5-main branch]
2022-05-05 15:15:33 -04:00
philippe deseve
b2cec0d0d0 Use WorldPartitionRuntimeCell data layers whenever possible when retrieving data layers for an actor
Remove check in DataLayerHierarchy that the world need to be teared down when removing actors. Callback occurs when unloading cells.

#rb jeanfrancois.dube
#test PIE, SIE, Game
#preflight 62729fce2f6d177be3c5f198

#ROBOMERGE-AUTHOR: philippe.deseve
#ROBOMERGE-SOURCE: CL 20042858 via CL 20042862 via CL 20042869
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20044831 by philippe deseve in ue5-main branch]
2022-05-04 14:05:46 -04:00
philippe deseve
5491b76a38 Fix a crash occuring when editing a Gameplay Effect
Restrict the usage of retrieving an actor's DataLayerInstanace via it's cell to PIE/SIE and -game in editor builds.
Fix potential crash when trying to retrieve DataLayerInstances of an actor in non-worldpartition world

#test PIE, SIE, -game, cooked game, FN editing
#jira UE-150868
#rb richard.malo

#ROBOMERGE-AUTHOR: philippe.deseve
#ROBOMERGE-SOURCE: CL 20024307 via CL 20024321 via CL 20024344
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)

[CL 20025859 by philippe deseve in ue5-main branch]
2022-05-03 10:53:21 -04:00