Commit Graph

1100 Commits

Author SHA1 Message Date
wouter dek
47871a0335 Added LWC complexity debug view, similar to the shader complexity view, which shows how much LWC function usage each material has.
#jira UE-206909
#rb jamie.hayes

[CL 32296590 by wouter dek in ue5-main branch]
2024-03-18 06:01:39 -04:00
luc eygasier
d48454bf5b Adds SActionableMessageViewportWidget in Viewport's toolbar.
This widget will host warnings or messages with the ability to automate actions for the user.

Current actionable messages:
* Invalid Landscape grassmaps, with associated rebuild action
* Invalid Landscape physical materials, with associated rebuild action
* Invalid Landscape nanite meshes with associated rebuild action
* Invalid grassmaps, physical materials, nanite meshes will be agregated to only one message if multiple rebuild are necessary
* Landscape proxy packages needs to be updated, with associated mark dirty action

#jira UE-204527

#rb Jonathan.Bard

[CL 32224398 by luc eygasier in ue5-main branch]
2024-03-13 15:34:54 -04:00
david bromberg
03f40c55f1 Sequencer- Refactor Bindings to support inherited Custom Bindings.
With this checkin, the binding system inside Level Sequences has been refactored to allow C++ custom binding classes inheriting from a new class, UMovieSceneCustomBinding. Custom bindings are held as instanced UObjects inside FMovieSceneBindingReference, alongside the Universal Object Locator. In the case where a custom binding has been specified, the UOL will be ignored.
The intention with this change is to allow developers to create their own arbitrary methods of binding any UObject to a track inside Sequencer. Examples of this include:
* Runtime dynamic bindings to spawned NPC or player characters (e.g. in UEFN) with a different spawned preview character
* Blueprint-specified dynamic bindings
* Spawnable bindings based on something other than a AActor template
* Scene Graph/Prefabs

Alongside the base UMovieSceneCustomBinding class, a new hierarchy of spawnable custom binding classes has been created as the basis for allowing spawnable bindings that don't require object templates, and may instead require other asset references, for example UEFN NPC character spawnables requiring an NPC Character Definition asset.
This hierarchy is currently. UMovieSceneCustomBinding <- UMovieSceneSpawnableBindingBase <- UMovieSceneSpawnableActorBindingBase <- UMovieSceneSpawnableActorBinding.
This hierarchy allows for spawnables of non-actor types, spawnables of actor types not based on templates, and finally UMovieSceneSpawnableActorBinding, which is a re-implementation of FMovieSceneSpawnable inside the custom binding system.
Going forward, we will be moving to deprecate FMovieSceneSpawnable in UE Sequencer in favor of the custom spawnable binding types. Sequences with FMovieSceneSpawnables will continue to function as normal, but new spawnables in new sequences will use UMovieSceneSpawnableActorBinding under the hood. These will technically have FMovieScenePossessable structs created for them for now rather than FMovieSceneSpawnable structs. This should be mostly invisible to the user.

In addition, I've added a separate hierarchy of custom bindings called 'Replaceable' bindings. A 'Replaceable' is a binding type that will expect in runtime to always be overridden by a different object that may not be available in editor. UMovieSceneReplaceableBinding will hold in EDITORONLY_DATA a UMovieSceneSpawnableBindingBase to provide a preview while within Sequencer. Included in this is a UMovieSceneReplaceableActorBinding, which uses the UMovieSceneSpawnableActorBinding internally to spawn its preview, and has no implementation to find the actor during runtime- it relies on the user overriding the actor binding using the existing BindingOverrides method on LevelSequenceActor.

Next Steps:
* UEFN custom bindings will be built upon this system, to allow UEFN users multiple ways to override bindings.
* UEFN custom spawnable bindings will be built upon this system, to allow UEFN users a way to spawn actors and objects within Sequencer with their lifetime managed by Sequencer
* With this change, we have a cleaner way of incorporating the 'dynamic binding' work that uses the Director Blueprint to create a spawnable or possessable. This should be incorporated into the UCustomBinding hierarchy.
* Once Verse supports it, we should add Verse custom binding logic
* We need to add a Universal Object Locator type that can reference any other binding in the sequence hierarchy. This will allow us to adapt the existing 'Spawnable Parent' possessable binding logic to reference any other type of binding, not just spawnable ones.
* Eventually we will fully deprecate FMovieSceneSpawnable

Further notes:
* A previous imagined version of this system used the cache as a way to allow locators to spawn actors and register them with Sequencer. This change removes this code.
* Custom Spawnable Bindings use the Binding Lifetime Track to determine their spawn lifetime rather than the old spawn track. This unifies the concept of the lifetime of an object binding within sequencer for both spawnables and possessables.
* As FMovieScenePossessable and FMovieSceneBindingReferences allows multiple bindings per guid, this change now allows multiple spawnables to be spawned and controlled by a single binding track. However, some of the editor tooling code doesn't currently handle this properly and at times assumes a single binding. This should be resolved one way or the other.
* The UX for this allows UCustomBindings to handle creating bindings from any dragged in object using a priority system- Sequencer will ask all classes in priority order if they support binding creation from that object.
* The UX supports unique overlay icons and tooltips for different types of bindings
* The UX allows each binding type to decide whether it can convert a current binding into its own type and then do so
* Currently there is some manual instanced detail customization for UMovieSceneCustomSpawnableActorBinding. We use instanced customization so that the UX has the sequencer context. This should both be improved (to allow ways to choose a class/template via this UI), as well as extended so that clients outside of the Movie Scene plugin can register instanced detail customizations for their own binding types.
* Where possible, Sequencer APIs around spawnables have been refactored to take guids rather than FMovieSceneSpawnable references. In particular, custom spawnables do still use the spawn register, but do not use actor spawners- instead the UMovieSceneCustomBinding class is given the responsiblity of spawning/destroying the object/actor. This created an awkward API for USD export, which had overridden the spawn register to unhide/hide actors rather than spawning/destroying them. This could use some more work. MetaHumanPerformanceExportUtils will also need to be refactored at some point to use the custom spawnable binding system.
* FSequencerUtilities::CreateBinding and CreateGenericBinding has been refactored to accept binding parameters and now supports creating custom bindings including spawnables, as well as replacing existing bindings and adding additional bindings to an existing guid.

[REVIEW] [at]ue-sequencer
#jira UE-199299, FORT-582815, UE-209594

#rb Andrew.Rodham, daniel.coelho, Max.Chen

[CL 32218187 by david bromberg in ue5-main branch]
2024-03-13 12:48:46 -04:00
luc eygasier
29c904b3e3 Undo //Fortnite/Release-29.20/Engine/... changelist 32186488
#jira UE-204527

[CL 32191590 by luc eygasier in ue5-main branch]
2024-03-12 16:45:06 -04:00
luc eygasier
c409a75cc9 Adds SActionableMessageViewportWidget in Viewport's toolbar.
This widget will host warnings or messages with the ability to automate actions for the user.

Current actionable messages:
* Invalid Landscape grassmaps, with associated rebuild action
* Invalid Landscape physical materials, with associated rebuild action
* Invalid Landscape nanite meshes with associated rebuild action
* Invalid grassmaps, physical materials, nanite meshes will be agregated to only one message if multiple rebuild are necessary
* Landscape proxy packages needs to be updated, with associated mark dirty action

#jira UE-204527

#rb chris.tchou, jonathan.bard

[CL 32190792 by luc eygasier in ue5-main branch]
2024-03-12 16:29:49 -04:00
ronald koppers
d48fdfab3e Moved the new alert icons from the core to the editor style.
#jira UE-206167
#rb aditya.ravichandran, Patrick.Boutot

[CL 32183264 by ronald koppers in ue5-main branch]
2024-03-12 12:42:19 -04:00
zousar shaker
3c69a2d2df Make ZenDashboard behave as a standard (non systray) app on Windows. Remove the search widgets from the ZenDashboard menus. Add an entry to the DerivedData status bar to launch (and if needed build) ZenDashboard.
#rb dan.engelbrecht
#jira UE-204737

[CL 32094001 by zousar shaker in ue5-main branch]
2024-03-07 13:44:59 -05:00
mark lintott
2700284fbc Added a new EditorPerformance to a plugin.
It's experimental and not enabled by default
#rb robert.millar, logan.buchy
#jira UE-207860

[FYI] thierry.begin

[CL 32092375 by mark lintott in ue5-main branch]
2024-03-07 13:05:47 -05:00
vincent beauchemin
7db21e24cd World Partition Editor
* Add ShowMouseCoordinates (World Position) in Show Menu.
* Used the default GrabHandClosed cursor when panning.
#rb JeanFrancois.Dube
#jira UE-207913
[FYI] JeanSebastien.Guay

[CL 31801986 by vincent beauchemin in ue5-main branch]
2024-02-26 09:07:38 -05:00
robert millar
08dcc63512 Icons in content browser for plugin root folders
- CVar ContentBrowser.ShowPluginFolderIcon to control visibility, disabled in UEFN restricted mode
- Child folders in plugins use normal icon to reduce visual noise

[CL 31731686 by robert millar in ue5-main branch]
2024-02-22 15:08:38 -05:00
robert millar
6e9c591047 Special icon for virtual organizational folders in content browser.
- ContentBrowserUtils::ShouldShowCustomVirtualFolderIcon and cvar ContentBrowser.ShowCustomVirtualFolderIcon so it can be disabled in UEFN
- Attribute ContentBrowserItemAttributes::ItemIsCustomVirtualFolder for categorization
- Built-in folders like All, Game, Engine, Plugins are not marked with the above attribute
- Set ContentBrowser.ShowCustomVirtualFolderIcon to 0 when entering UEFN restricted mode

#rb Rex.Hill

[CL 31729647 by robert millar in ue5-main branch]
2024-02-22 14:13:17 -05:00
ben humphreys
c83a813e81 Function parameter and local variable nodes in Blueprint function graphs now have an icon above them. This can be changed through Editor Settings.
#jira UE-206598
#rb dave.jones2
[FYI] saad.nader

[CL 31659957 by ben humphreys in ue5-main branch]
2024-02-20 17:55:27 -05:00
roland munguia
c22aed9bf7 MM Editor - Fixed bad tooltip names for pose reselection and added new icon
#rnx none
#jira UE-207284
#rb samuele.rigamonti

[CL 31598644 by roland munguia in ue5-main branch]
2024-02-17 02:46:20 -05:00
robert millar
e38bed1ef6 Remove code for different icons in content browser for plugins.
[CL 31576905 by robert millar in ue5-main branch]
2024-02-16 15:15:20 -05:00
robert millar
5c9146c4ce Plugin content folder icon for asset tile view.
[CL 31308255 by robert millar in ue5-main branch]
2024-02-08 17:34:03 -05:00
thomas sarkanen
507ad255ba Anim notify and sync marker workflow changes
Skeletons are no longer dirtied when adding notifies and sync markers from animation timelines.
Skeletons can still hold sync markers and notifies, but they are not mandatory and they can all be held in animation assets if required.
'Find References' for notifies and sync markers now launches the find/replace dialog when selected from the animation timeline.
Removing notifies and sync markers from the skeleton now does only that. To remove from animations, use the find/replace tab.
Updated BP node spawning for anim notifies to use a custom spawner, correctly use the asset registry, apply filtering and context sensitivity and move some of the code out of BlueprintGraph.
Added icons to distinguish sync markers/notifies in the editing tab.
Updated notify editing tab filtering to allow users to filter items from 'this' skeleton, compatible skeletons or other assets.

Additionally fixed up icons for some Persona tabs that were incorrect.

#jira UE-204872
#rb jaime.cifuentes, Phillip.Kavan

[CL 31168417 by thomas sarkanen in ue5-main branch]
2024-02-05 05:30:20 -05:00
ben hoffman
0a6de35a5b Editor | Add functionality for automatic fixes in tokenized messages
This allows you to attach an automatic fix to any error or warning that may arise from eg. validation.

#jira none
#rb Julien.StJean

#ushell-cherrypick of 31124509 by gabriel.wreczycki

[CL 31126352 by ben hoffman in ue5-main branch]
2024-02-02 10:58:45 -05:00
aditya ravichandran
b5b88730c0 Details Panel Overrides UX updates:
Move icons into an editor folder so they don't get cooked
Change the override combo button to match the desired behavior

#jira UE-192063, UE-204831, UE-205036
#rb logan.buchy

[CL 31099835 by aditya ravichandran in ue5-main branch]
2024-02-01 15:41:22 -05:00
aditya ravichandran
2bfa482416 Submit missing stylesheet updates with overrides support
#jira UE-204605
#rb logan.buchy

[CL 31051148 by aditya ravichandran in ue5-main branch]
2024-01-31 11:43:42 -05:00
wouter burgers
39950e17e6 Skein / ViewportStatus: Added SourceControlOutlineMenu, which will extend the viewport's SHOW menu with options to toggle source control status outlines on actors on or off.
#rb Marco.Anastasi
#rnx

[CL 31044156 by wouter burgers in ue5-main branch]
2024-01-31 08:31:41 -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
andrew rodham
c262d4f937 Sequencer: Outliner UX improvements
This change represents the final round of improvements to the Sequencer outliner UI per UX team's mockups. The notable changes are:

 - All widgets on the outliner are now properly aligned and maintained through a rich and extensible column management API. All columns can be toggled on and off as desired.
 - Previous/Add/Next key navigation buttons have updated icons and spacing and are consistent with the pin/lock/mute/solo icons
 - Labels and edit widgets will now forcibly overflow other, less important, widgets on hover if they are occluded because of a narrow overal outliner width
 - All rows now have a separator line
 - Track rows are now uniform heights
 - Lock camera button is now more prominent

#rb Max.Chen
#jira UE-200166

[CL 30976450 by andrew rodham in ue5-main branch]
2024-01-29 15:28:45 -05:00
robert millar
a22b242ee6 Separate icons for plugin roots and plugin subfolders
[CL 30784914 by robert millar in ue5-main branch]
2024-01-22 16:02:50 -05:00
sebastien lussier
8230a5e5f6 World Partition Editor - Added option to show/hide HLOD actors bounds, which are now hidden by default
#rb JeanFrancois.Dube

[CL 30634602 by sebastien lussier in ue5-main branch]
2024-01-16 11:01:46 -05:00
robert millar
e3bc11f078 Plugin folder icon in content browser path tree
Gated behind ContentBrowser.UsePluginFolderIcon until proper icon is ready

[CL 30622360 by robert millar in ue5-main branch]
2024-01-15 13:57:21 -05:00