Commit Graph

32 Commits

Author SHA1 Message Date
henrik karlsson
b5164ac775 Fixes to make modules compile with IWYU. We've added to IWYU toolchain so it compiles "orphaned" headers which does not have a owning cpp file. This identified lots of headers that couldn't be compiled by themselves (or if they were to included first)
Change consist of only forward declaration and additional includes

#preflight 63789c1de30d438849c48188
#rb none

[CL 23218412 by henrik karlsson in ue5-main branch]
2022-11-21 03:22:23 -05:00
ludovic chabant
da73a683f7 Sequencer: fix loophole where non-renameable tracks could be renamed by simply clicking on their label in the sequencer outliner view
#rb andrew.rodham

[CL 22812043 by ludovic chabant in ue5-main branch]
2022-10-27 12:39:50 -04:00
henrik karlsson
b5b86c796c This change is a strategical submit for a coming change that removes lots of includes in headers that are included by many files. This change contains adding of includes in files that previously got those includes transitively from other inclkudes
#preflight 6355d4940313c24974b2107b
#rb none

[CL 22783162 by henrik karlsson in ue5-main branch]
2022-10-26 12:57:32 -04:00
andrew rodham
a9fb6ad1e7 Sequencer: Added an ensure to protect against adding a model as a child of itself
#jira none
#rb Max.Chen
#preflight 633744e2b34118b9b4bb4b49

[CL 22284287 by andrew rodham in ue5-main branch]
2022-09-30 19:26:01 -04:00
ludovic chabant
c8596663d6 Sequencer: Clean internal state when recycling VMs
This fixes a problem of pre-recycling state leaking through after an update

#rb max.chen, andrew.rodham
#jira none
#preflight 6328be3e6919ce39982d8266

[CL 22087360 by ludovic chabant in ue5-main branch]
2022-09-19 22:28:57 -04:00
ludovic chabant
1ec5865d8a Sequencer: Fix report of hierarchical changes
#rb max.chen, andrew.rodham
#jira none
#preflight 63289426ae4e65ae63ea01cd

[CL 22087247 by ludovic chabant in ue5-main branch]
2022-09-19 22:14:59 -04:00
bryan sefcik
cb0456c6d4 Cleaned up build.cs files by removing any include paths that were already being added by UBT. This was done to help identify how include paths are being added and to help with future refactoring.
#jira
#preflight 631a5c04967ffc68fbf0dd8f

[CL 21911226 by bryan sefcik in ue5-main branch]
2022-09-08 21:44:02 -04:00
aleksandr cicenkov
955b327d06 Add key enabled state
#jira MH-7227
#preflight 63176bd4a20b67673b07d71c

[CL 21819811 by aleksandr cicenkov in ue5-main branch]
2022-09-06 12:21:00 -04:00
Max Chen
acd0eec433 Sequencer: Fix channel key areas being included when filtered out
#jira UE-162856
#rb andrew.rodham
#preflight 63123926da1671f997cc9b94

[CL 21763554 by Max Chen in ue5-main branch]
2022-09-02 13:28:36 -04:00
Andrew Rodham
e51c52c348 Sequencer: Optimized key interactions for large numbers of keys
A few changes here:

 - FKeyHandleLookupTable used to roll its own sparse array using a TArray of TOptionals. It was also designed to lazily update its map of handles to indices if it encountered one that was not correct. Unfortunately this results in an n^2 operation if you try and resolve key handles for all the elements in a channel when they are not valid (because it has to look through all the key handles to find the correct index). I have changed this to always keep the handle/index mappings up to date when moving keys around. In this way the operation scales poorly with the number of keys added or removed from the channel, rather than the total number of keys (which is still bad, but not as bad as always scaling poorly for large numbers of keys).

  - Various optimizations to FKeyRenderer. When preserving computed keys (ie, when we are simply padding new keys into or old keys out of view), we no longer re-allocate the entire array (which can be very large), and instead opt to relocate-construct the preserved keys within the same allocation. When the array gets large enough we always end up going to the crt allocator which is extremely slow, so keeping the allocation alive is beneficial here.

  - FKeyRenderer cached key computation is now performed using a parallel for loop when the number of channels or keys is large. This should really be improved by doing the same work for _all keys rendered in the current frame_ rahter than only going wide for each section, but this is a good win for control rigs at least.

  - When determining whether to draw a group of keys as selected, hovered or preview selected, we now only consider the first 500 keys before assuming all the others have the same state. This saves us from iterating thousands and thousands of keys to see if they are all selected when zoomed out very far.

 - FSequencerSelectedKey construction and comparison was taking up a lot of CPU. I have added raw FKeyHandle sets to the various selection classes for direct comparisons which speeds up checking for selected and hovered keys greatly. FKeyHandle is a unique index regardless of what channel it exists on, so this is safe.

#preflight 630d555c0345de4ccf9738e4
#rb Ludovic.Chabant, Max.Chen
#jira UE-162145

[CL 21694939 by Andrew Rodham in ue5-main branch]
2022-08-29 21:23:26 -04:00
Andrew Rodham
6162641d8a Sequencer: Added flags for outliner sizing structure to indicate whether the sizing is static or dynamic (ie, should update every frame)
#preflight 630d555c0345de4ccf9738e4
#rb Ludovic.Chabant, Max.Chen
#jira none

[CL 21694564 by Andrew Rodham in ue5-main branch]
2022-08-29 21:07:17 -04:00
Andrew Rodham
2510e5ad6e Sequencer: Added generic ways to create custom views for channels
- This is now supported by either overriding ISequencerSection::CreateChannelModel, or by defining a

TSharedPtr<UE::Sequencer::STrackLaneView> CreateChannelView(TMovieSceneChannelHandle<FMyChannelType>, TWeakPtr<FChannelModel> const UE::Sequencer::FCreateTrackLaneViewParams&);

overload for the sequencer channel traits of that type.


#preflight 630d555c0345de4ccf9738e4
#rb Ludovic.Chabant, Max.Chen
#jira none

[CL 21694520 by Andrew Rodham in ue5-main branch]
2022-08-29 21:05:05 -04:00
Andrew Rodham
7f0f9e4647 Sequencer: Tiny section width fixes
- We previously did not arrange sections with degenerate (ie, [0,0] ) ranges on their track lanes. Unfortunately UMG often creates degenerate section ranges so we need to show those properly.
  - Also fixed resize-handle offsets that were not rendering correctly outside the section range when the pixel width of the section was small enough.

#jira UE-161709
#preflight 63079aa82a56ec23c8402321
#rb Max.Chen

[CL 21566845 by Andrew Rodham in ue5-main branch]
2022-08-25 12:29:04 -04:00
bryan sefcik
8cc129f2b6 IWYU Pass 1 - Engine/Source/Editor/...
#jira
#preflight 6306736ac85b7fef22be7751

[CL 21558583 by bryan sefcik in ue5-main branch]
2022-08-24 22:45:13 -04:00
Andrew Rodham
0c80c441ee Sequencer: Add channel view to collapsed sections
SSequencerSection now has an SChannelView that is only shown when collapsed, which reflects all the keys within it (including top-level channels). This actually allows us to also remove a second pass we had to do previously to generate top-level channel view widgets as well.

#jira UE-161879
#rb Max.Chen
#preflight 630661efc744dac9672f5c44

[CL 21545954 by Andrew Rodham in ue5-main branch]
2022-08-24 13:44:18 -04:00
Andrew Rodham
42d6d35621 Sequencer: Readded support for DrawExtra in channel views
DrawExtra now receives a parameter struct that contains the necessary slate rendering parameters, rather than utilizing the section painter and separate geometry. Ideally such rendering code would exist in actual view models or custom views, but for now this API needs to be maintained

#rb Mike.Zyracki, Max.Chen, Benoit.Badreau
#jira none
#preflight 63064e705366f61a42c398d1

[CL 21543371 by Andrew Rodham in ue5-main branch]
2022-08-24 12:40:10 -04:00
Andrew Rodham
4efad8c5ee Sequencer: Fixed another erroneous fwd declaration
#jira none
#rb none
#preflight none

[CL 21542628 by Andrew Rodham in ue5-main branch]
2022-08-24 12:12:36 -04:00
Andrew Rodham
5570354b69 Sequencer: Stop key bars from being drawn when EKeyBarConnectionStyle == None
#rb none
#jira none
#preflight 630637ef516bef57ffeadaa0

[CL 21540561 by Andrew Rodham in ue5-main branch]
2022-08-24 10:42:52 -04:00
Andrew Rodham
c50cd19f08 Added missing include and fixed ambiguous symbol
#rb none
#preflight none
#jira none

[CL 21537927 by Andrew Rodham in ue5-main branch]
2022-08-24 08:05:30 -04:00
Andrew Rodham
00eddaf65f 21514370 Sequencer: UX Refresh for 5.1 - Nested tracklanes, key bars, snapping polish
- 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]
2022-08-23 19:51:55 -04:00
ludovic chabant
e6c3c00a88 Sequencer: create a menu extender and pass it down to sequencer context menus
Previously, only float channels were adding an extension to context menus. When double channels were made, they had the same code but only the latest one to add an extension would "win", because menu builders only use the top extender. So now we create one extender with multiple extensions in it. However, this means that now we'll get duplicate sets of menu entries (one for double channels, one for float channels). Plus the menu entries from overriden channels. So we also now put channel menu entries inside sub-menus, in a different context menu section.

#jira none
#rb max.chen
#preflight 6303f632a45b007ea2551892

[CL 21494993 by ludovic chabant in ue5-main branch]
2022-08-22 17:48:07 -04:00
UnrealBot
73409369c0 Branch snapshot for CL 21319338
[CL 21319338 in ue5-main branch]
2022-08-10 16:03:37 +00:00
ludovic chabant
6ce9cca2fe Fix VM extension collection not updating correctly
This made the layer bars never properly computed.

#rb max.chen, mike.zyracki
#robomerge FNMain
#jira none
#preflight 62d84d2ed76ea4b5037e9e01

[CL 21186194 by ludovic chabant in ue5-main branch]
2022-07-20 14:50:44 -04:00
bryan sefcik
98b51354ed Ran IWYU on Public headers under Engine/Source/Editor/...
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]
2022-07-20 11:56:29 -04:00
andrew rodham
cc38d03a29 Sequencer: Fixed extension collections not being updated on access when there was a latent hierarchy changed notification pending
#jira UE-158263
#rb Max.Chen
#preflight 62cc16e26a67c3717a37495c

#ROBOMERGE-AUTHOR: andrew.rodham
#ROBOMERGE-SOURCE: CL 21038444 via CL 21038447 via CL 21038451
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)

[CL 21040408 by andrew rodham in ue5-main branch]
2022-07-11 10:52:54 -04:00