Commit Graph

50 Commits

Author SHA1 Message Date
richard malo
62370762a1 Replaced hardcoded LoadModuleChecked of WorldPartitionEditor by IWorldPartitionEditorModule::Get(). Also removed cached instance pointer as it's not safe to be used during shutdown phase.
#rb Sebastien.Lussier

[CL 32697013 by richard malo in ue5-main branch]
2024-04-03 10:07:35 -04:00
jeanfrancois dube
88f6a09ab0 World Partition: fix minor regression from 32133290 that was showing deleted actors as unloaded in the world outliner.
#rb Richard.Malo

[CL 32278736 by jeanfrancois dube in ue5-main branch]
2024-03-15 13:40:39 -04:00
jeanfrancois dube
df6acf18b3 World Partition:
- FEditorLoadedActorCache was reporting unregistered loaded actors and the code that was using it was expecting registered actors.
- Replaced FEditorLoadedActorCache by FWorldPartitionHelpers::GetLoadedActorGuidsForLevel that gathers registered actors GUIDs and updated callers.
- UWorldPartition::Tick is now private to avoid code like LandscapeEditorUtils::SaveLandscapeProxies doing manual ticks to get around unwanted internal behaviors.
- TExternalDirtyActorsTracker can now filter out tracked actors depending on the parent class wanted behavior.
- Don't track dirty actors coming from non transactional operations.

#rb chris.tchou

[CL 32133372 by jeanfrancois dube in ue5-main branch]
2024-03-08 17:00:42 -05:00
richard malo
14620f45a3 External Data Layer V1
- Allows for plugins to inject/remove content (actors) in a partitioned world
- Serves as a replacement for the experimental 'Content Bundle' feature
- Added new External Data Layer (EDL) Asset
- Added new Game Feature Action 'AddWorldPartitionContent' to control activation of an EDL asset
- Supports Data Layers inside a plugin (child of an EDL)
- Added builder to convert content bundles to EDL (UGameFeatureActionConvertContentBundleWorldPartitionBuilder)
- Feature is temporarily disabled by default and can be turned on using Editor Experimental Settings 'Enable World Partition External Data Layers' flag
#jira UE-204248
#rb JeanFrancois.Dube, Patrick.Enfedaque, Sebastien.Lussier
#tests QAGame PIE/-game/cooked, Regression test PIE/cook of latest game map, Tested PIE/cook of latest game map converted to EDL

[CL 31015614 by richard malo in ue5-main branch]
2024-01-30 14:18:27 -05:00
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