- Implemented the UnsavedAssetTrackers plugin and enabled it by default.
- Added the 'Unsaved' button to the Editor taskbars to display the number of unsaved packages along with a warning icon if warning are associated with one of the unsaved files.
- Updated the 'Save Content' package to display warnings if one of the packages has warnings.
- Added a class to monitor and periodically update the source controlled status of a collection of files/packages.
- Changed the default value of PromptForCheckoutOnAssetModification settings to False because the Unsaved button flow is complementary (and the popup was noisy for OFPA users).
- Updated the changelist window to use the soure control file status monitor.
#jira UE-163734 - Implement the 'Unsaved' Editor Taskbar Button
#rb Patrick.Enfedaque
#preflight 633ae915b12b8af5fde80f7c
[CL 22322224 by patrick laflamme in ue5-main branch]
It was the initial bug, but while looking at it, I noticed that the MultilineEditableTextBox was containing both a Font via FEditableTextBoxStyle, and another one via FTextBlockStyle, thus being error prone / inconsistent.
In order to fix the underlying issue (in addition to fix the initial bug), I removed the Font from FEditableTextBoxStyle, and moved the FTextBlockStyle from MultilineEditableTextBox to FEditableTextBoxStyle.
It solves the duplication issue and so make it clear where the Font should be set/read from.
However, as the text block style is now embedded in the editable text box style, it cannot be initialized the exact same way, and I had to do some changes to ensure there was no regression, by configuring various FEditableTextBoxStyle in some style files. I also change the default value for TextBlockStyle to better match our default theme.
-Default font is not set for text widgets.
EditableWidget: ensure to have a default font, and to set the style when calling SynchronizeProperties to ensure it reacts directly without having to force a refresh (by moving the widget for instance)
Bonus:
-Move to cpp some private methods that where 'forced' inline (and we were using function pointer on them). It will avoid some noise in public interface and speed up iteration / compile time when playing with them.
#jira UE-96464
#jira UE-137126
[RN] MultilineEditableTextBox was containing both a Font via FEditableTextBoxStyle, and another one via FTextBlockStyle, thus being error prone / inconsistent.The Font from FEditableTextBoxStyle has been removed, and the FTextBlockStyle moved from MultilineEditableTextBox to FEditableTextBoxStyle. It solves the duplication issue and so make it clear where the Font should be set/read from.
However, as the FTextBlockStyle is now embedded in the FEditableTextBoxStyle, it cannot be initialized the exact same way, and you can now configure the FTextBlockStyle of FEditableTextBoxStyle when creating one from scratch, by calling SetTextStyle on it.
Test
- created a Widget blueprint with different editable types combination: multiline or single line, box or no box.
-Validated that everything was reacting live as expected now.
-Created a blue print to set the text style and validated it was working.
-Create data with old version, then open it with updated version to validate that the visual was still the same and deprecation of style working as expected.
-checked different places in the editor using variation of editable text to ensure they were behaving as before (detail view, console command entry, comment on blueprint node).
#preflight 63344b9f110bb3721ef8aa77
[CL 22232366 by yohann dossantos in ue5-main branch]
#rb wouter.burgers, patrick.laflamme
#preflight 63301d3d665f6b8f7fab0066
RESOLUTION: Resolved conflict with IsAtLatestRevision() and GetNumLocalChanges()
[CL 22193646 by marco anastasi in ue5-main branch]
- C++ folders in the folder tree now use SVGs like the other icons
- Large version of the C++ icon has been added and is now used in the asset view, same as we do for developer folders
- Small version of the open developer folder icon added and now used when developer folders are open
#jira UE-162524
#preflight 630f6dc2556fc14dce9571d5
#rb lauren.barnes
[CL 22115897 by Robb Surridge in ue5-main branch]
* Deprecated UPoseWatch::IconName as only pose watch (node watch) components can have icons
#jira UE-158314
#rb jurre.debaare
#preflight 632af1a7331ace46b568cf0d
[CL 22113600 by lucas dower in ue5-main branch]
Historically not having an HMD available has meant this toolbar button would be hidden entirely, and this is still the case if no derived/alternative UVREditorMode classes are available. However, if any additional mode classes are present (for example because the user has enabled the Virtual Scouting plugin), the toolbar button will always be shown, in the hopes that surfacing the HMD status will simplify the onboarding experience for new Virtual Scouting users.
If the configured mode class becomes unavailable (for example because the corresponding plugin was subsequently disabled), then its object path will be shown as selected and disabled in the dropdown, and the primary toggle button will also be disabled until a valid mode is selected.
#jira UE-131286, UE-164026
#rb jason.walter, Lauren.Barnes
#preflight 6324f528f258fccf98e5e3ec
[CL 22087033 by zach brockway in ue5-main branch]
Changed the color of the uncontrolled changelist from gray to orange
Added an icon in the to the file status column header.
#jira UE-155216 - Make the selected changelist view (list of files in a CL) searchable.
#jira UE-155213 - Make the list of changelists searchable.
#rb Patrick.Enfedaque
#preflight 631b8c332b7fe03eb601ec03
[CL 21973932 by patrick laflamme in ue5-main branch]
- Nested track lanes are now supported, allowing sequencer channels to be added as fully fledged child widgets of a parent, while still being arranged automatically and have their lifetime managed by their respective outliner item (therefore, they are now fully virtualized as you might expect)
- Key bars have been added. This is exposed through a new ConnectionStyle member of FKeyDrawParams. Their rendering is also cached and batched within FKeyRenderer
- Most relevant parts have been moved to SequencerCore now. Channel and category views remain in the Sequencer library due to their reliance on internal classes there, but they should be trivially moved to SequencerCore as a future task.
- Track area now has a shared FTimeToPixel that can be shared amonst any widgets that need to convert times to track-area-pixel-space.
- Added methods to ISequencerSection to allow client classes to create custom channel and category model types
- Layer bar improvements:
- Layer bars now encompass finite section ranges.
- Resize handles are now only visible on hover as per design guidelines.
- Inline curve display improvements:
- Rendering is now part of each channel's view
- Added API for determining curve extents
- Curves are now rendered using FCurveModels
- Snapping fixes and improvements
- There were several places where snapping seemed not to work at all, or would snap inconsistently with dense keyframe data.
- I've added a Weighting to the snap points so we can specify preferred snap points (section bounds, time cursor etc), and accumulate weights for specific frames where many keys exist. This helps to snap to times that are actually relevant, rather than always snapping to the nearest snap point, even if that snap point only has a single key on that time, and there are others within the snap threshold that have hundreds.
- Converted the snapping utilities to operate on FFrameTimes rather than FFrameNumbers in order to support custom sequencer UIs that might not operate on integer time bases (it remains fully frame accurate with integers however)
- Allow 'Key this section' to be unchecked
#rb Max.Chen, Ludovic.Chabant, Matt.Hoffman
#preflight 63055b5903520e063cd53cfb
[CL 21526535 by Andrew Rodham in ue5-main branch]
- Clicking "Import..." opens "document" from the OS window. Importing a theme will update the current active theme. After import, this theme should be found where user imported it from (i.e., document) AND the themes folder within the engine. Cannot import a theme with names that already exist. Also cannot import an invalid .json file.
- Clicking "Export..." opens "document" from the OS window. After export, this theme should be found where user exported it to (i.e., document) AND remain in the themes folder within the engine.
- Both import and export will prompt success/failure message within the engine.
UI Changes:
- "Color" header for Active Theme is now called "Theme"
- Uploaded new icons for import / export (both 16x16 and 20x20 versions)
- ThemeID now also gets exported when exporting Appearance setting.
- "Viewport Selection Color" and "Editor Window Background Color" are now under "User Interface"
#jira UE-160592: Import/Export Workflow for Themes
#rb editor-ux
#preflight 6304d98fc85b7fef228068f7
[CL 21507950 by lina lam in ue5-main branch]
- Enable users to view and edit the parent and child frame transforms of constraints in the PhAT details panel
- Constraint transforms are represented as a position and a rotator in the details panel (internally they are represented as a position and a pair of orthonormal vectors)
- Constraint transforms can optionally be displayed in the frame of the assocaited bone OR relative to the default (snapped) transforms
- Allow parent / child transform position / orientation componenets to be 'snapped' to defaults individually
- Support using modifier keys to manipulate only the child frame transform via a viewport widget
#jira UE-119744
#jira UE-119741
#rb [at]Thomas.Sarkanen, [at]sebastian.nordgren
#preflight 62f13b9a23003b62a3d4c277
#ROBOMERGE-AUTHOR: nick.brett
#ROBOMERGE-SOURCE: CL 21282618 via CL 21282632 via CL 21282638
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21283069 by nick brett in ue5-main branch]
Headers are updated to contain any missing #includes needed to compile and #includes are sorted. Nothing is removed.
#ushell-cherrypick of 21065253 by bryan.sefcik
#jira
#preflight 62d5b3e91062f2e63014598e
#ROBOMERGE-AUTHOR: bryan.sefcik
#ROBOMERGE-SOURCE: CL 21152630 via CL 21156388 via CL 21157044
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21181817 by bryan sefcik in ue5-main branch]