We were passing the first top-level channel to the widget but that was incorrect because it's not hoverable, and even if it was, it wouldn't be the thing that is hovered when the mouse cursor is on the widget. The widget is on the track item, so that's what should be passed.
Also, when clicking on the "add key" button and next/previous key buttons, we're not supposed to only look at the first top-level channel. If there are multiple top-level channels, we should key all of them (as applicable) if we click the "add key" button, and we should take into account all of their keys to navigate to the next/previous ones.
#jira none
#rb andrew.rodham
#preflight 62ab7bf0ae3f2bad9adcb0f2
[CL 20692273 by ludovic chabant in ue5-main branch]
- Fix issue when Level was being saved and it had some non writable dirty external packages
- Fix reentrance issue between FEditorFileUtils::PromptForCheckoutAndSave and FEditorFileUtils::PromptToCheckoutPackages
#rb lauren.barnes, jeanfrancois.dube, lauren.barnes
#preflight 62aa2a524a335ad67cbd6524
#robomerge EngineMerge
[CL 20685693 by Patrick Enfedaque in ue5-main branch]
Marked a number of node-internal properties as 'compiler generated defaults'.
Made sure that CPFUO skips 'compiler generated defaults' when re-instancing objects (previously it only did this in one of the reinstancing calls, not the main one).
Tweaked/added custom reinstancing logic for linked layers & graphs to ensure that linked instances get correctly hooked back up. This now only gets called on the already-reinstanced UAnimInstance rather than all of them
#rb Jurre.deBaare,Phillip.Kavan
#preflight 62a9ce4c943e7bb2560dbfd4
#ROBOMERGE-AUTHOR: thomas.sarkanen
#ROBOMERGE-SOURCE: CL 20684626 via CL 20684630 via CL 20684635
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v968-20684695)
[CL 20684974 by thomas sarkanen in ue5-main branch]
#rb Rex.Hill, Lauren.Barnes
#preflight 62aa17769c7b849bb57f5727
#ROBOMERGE-AUTHOR: scott.nelson
#ROBOMERGE-SOURCE: CL 20677473 via CL 20677506 via CL 20678503 via CL 20678648
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v955-20579017)
[CL 20679826 by scott nelson in ue5-main branch]
Add new custom version to specify a certain window of AnimSequences are not loadable
#fyi Jurre.deBaare
#robomerge EngineMerge
Original CL Desc
-----------------------------------------------------------------
**New**
- Engine
- IAnimationDataModel interface
- AnimationData plugin
- AnimSequencerDataModel, sequencer based implementation of IAnimationDataModel
- AnimSequencerDataController, controller for above (implementation of IAnimationDataController)
- Added FCompressedRichCurve::PopulateCurve, allowing users to convert back to a FRichCurve for validation/debugging
- Added DefaultFrameRate to AnimationSettings, this replaces the hardcoded 30FPS in code
- Added ::GetKeyIndicesFromTime which takes FFrameRate
- Added AnimSequenceBase::OnAnimModelLoaded, this is required for correct postloading behaviour of data model (specifically AnimSequencerDataModel, as it depends on data from its outer ? anim sequence)
- Added IAnimationDataModel ::Evaluate which now takes responsibility for evaluating raw animation bone, curve and attribute data. And moved all trackbased evaluation code into AnimDataModel.cpp
- Added a.ForceEvalRawData allowing to force evaluation of source data
- Added a.SkipDDC to force compressing animation data locally
**Changed**
- Reparent UAnimDataModel to IAnimationDataModel interface, and rejig behaviour
- AnimSequenceBase now reference AnimDataModel as IAnimationDataModel
- Upgrade path for legacy to IAnimationDataModel and existing UAnimDataModel to IAnimationDataModel through IAnimationDataController::PopulateWithExisting
- IAnimationDataModel data is now frame(number/rate/time) based rather than seconds/keyindices. This enforces frameborder aligned data from now on.
- Moved RichCurve evaluation code from RichCurve.cpp to separate file and consolidated all instances of copy-pasta behaviour
- Updated/removed deprecated EngineTests around AnimSequences
- Changed many instances to use a FFrameTime together with a known FFrameRate versus seconds and sequencelength in float involving frame \/ time calculations (including instances of FAnimKeyHelper)
- Switched anim sequence evaluation to use double in Extraction context for time value and patched up places with static\_cast\<double\>
- FRichCurve::Eval
- Make sure we always evaluate keys when T >= Key0.Time and T <= KeyN.Time to deal with crazy userweighted tangents
- Fixed WeightedKeyDataAdapter::GetKeyInterpMode/GetKeyTangentWeightMode retrieving invalid values, as it was indexing according to KeyIndex rather than KeyIndex\*2. This made it so that values were misinterpreted.
- Fixed WeightedEvalForTwoKeys for compressed data retrieving GetKeyInterpMode and GetKeyTangentWeightMode using the wrong index value. As they are not indexed using KeyDataHandle type.
- Fixed issue where compression could crash when containing zero-key scale additivebase track (tries to retrieve)
- Replaced instances of NULL with nullptr
- Moved required decompression information into FAnimSequenceDecompressionContext and reimplemented decompression within UE::Anim::Decompression namespace and new file
- Deprecated ::GetRawDataGuid and replaced with GetDataModel()->GenerateGuid()
- Fixed UAnimStreamable evaluation/compression (previously broken with MVC refactor)
- Updated Animation exporting pipeline to be frame-based rather than seconds
- Deprecated RetargetPose, replaced with FRetargetingScope (used within AnimModel::Evaluate)
- Fixed BaseAdditiveAnimation array become invalid/incorrect when removing zero-additve tracks during compression
- Updated EngineTest animation sequence related tests to new APIs (while maintaining deprecated path testing as well for now)
- AnimDataController / Animation Sequence tests now generate a USkeleton for the transient animation sequence (used to perform the test on)
**Removed**
- Unused file/class AnimData/AnimDataNotifyCollector.h
#rb Thomas.Sarkanen, Martin.Wilson, Alexis.Matte, Mike.Zyracki
#jira UE-131296
#preflight 62a308a8b0150a87f9d6891b
[CL 20677979 by Marc Audy in ue5-main branch]
A new lit vertex color material is added and used if the ModelingComponents module is loaded (to avoid adding a new engine material, if only GeometryFramework is loaded, then the engine-default vertex color material is used). This class-wide vertex color material can be overridden via UBaseDynamicMeshComponent::SetDefaultVertexColorMaterial()
Facet Normals / Flat Shading is now separately configurable, this overrides the normals at the vertexbuffer setup level, so it works independently of material.
Support also added for configuring the wireframe material used for BaseDynamicMeshComponent, and also for setting the wireframe color.
#preflight 62aa2330a40a4dc3a04052c6
#rb tyson.brochu
[CL 20676782 by Ryan Schmidt in ue5-main branch]