Commit Graph

74 Commits

Author SHA1 Message Date
aurel cordonnier
7f517562d5 Merge from Release-Engine-Staging @ 17438845 to Release-Engine-Test
This represents UE4/Main @17430120 and Dev-PerfTest @17437669

[CL 17439044 by aurel cordonnier in ue5-release-engine-test branch]
2021-09-06 12:23:53 -04:00
julien stjean
e3fb173774 Fixed Static analysis issues in interchange (fbxmesh.h) by changing the function GetMeshUniqueID from FbxHelper to return a empty string when the mesh is empty.
[FYI] Richard.TalbotWatkings

Fixed Static analysis in AnimationModifier.cpp the CurrentAnimSequence ptr can't be null since it was deferenced at the line 75.

Fixed Static analysis in PackageStoreOptimizer for some reason the static analysis did like the way the check was presented.

Fixed Static analysis in SComponentClassCombo.cpp and SDisplayClusterConfiguratorComponentCombo.cpp changed the code so that the static analyser should understand it better.

#jira UE-120410
#rb Jean.MichelDignard

#ROBOMERGE-SOURCE: CL 17071360 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v853-17066230)

[CL 17071396 by julien stjean in ue5-release-engine-test branch]
2021-08-05 13:15:23 -04:00
jurre debaare
69a7c18269 Option to apply Animation Modifiers to only new or changed animations
#feature add ability to only apply out-of-date animation modifiers from asset context menu, and through details view on AnimationModifier classes
#fix ensure that we do not apply pending kill modifiers or instances that are used for reverting
#jira UE-84819
#rb Thomas.Sarkanen
#preflight 60cb38fd6092ba000140842e

#ROBOMERGE-SOURCE: CL 16704034 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)

[CL 16704042 by jurre debaare in ue5-release-engine-test branch]
2021-06-17 09:50:18 -04:00
jurre debaare
6cdfe38db8 Feature Request: Apply All for Animations modified by Anim Modifier
#feature added ApplyModifier scope struct which keeps track of which modifier has prompted the user for any warnings, and allow them to YesAll/NoAll rather than having to individually prompt for each modifier/animation sequence combination
#jira UE-82825
#rb Thomas.Sarkanen

#ROBOMERGE-SOURCE: CL 16671774 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v834-16658389)

[CL 16671775 by jurre debaare in ue5-release-engine-test branch]
2021-06-15 07:23:45 -04:00
phillip kavan
1b6914ca4b Extends the class viewer module to support multiple custom class filters along with an optional associated view option flag.
Additional changes:
- Deprecates the previous method for specifying a singular custom class viewer filter and updates all existing occurrences of this pattern in engine code.
- Extends the property editor utilities interface to expose custom class filter(s) that can be applied to the class picker widget used for editing class property values.
- Adds an implementation of this interface to SDetailsView such that additional class filter(s) can now be configured to be applied to all underlying class property nodes.

#jira UE-108316
#rb Lauren.Barnes
#preflight 60c2102e8ae8960001110d50

#ROBOMERGE-OWNER: phillip.kavan
#ROBOMERGE-AUTHOR: phillip.kavan
#ROBOMERGE-SOURCE: CL 16623084 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v831-16623017)
#ROBOMERGE-CONFLICT from-shelf

[CL 16623246 by phillip kavan in ue5-release-engine-test branch]
2021-06-10 10:40:50 -04:00
aurel cordonnier
25a11deeac Merge from Release-Engine-Staging @ 16579919
This represents UE4/Main @ 16579691 and Dev-PerfTest @ 16579576

[CL 16581170 by aurel cordonnier in ue5-release-engine-test branch]
2021-06-07 20:09:45 -04:00
danny chapman
343371096b Analysis for BlendSpace. Also includes:
Tweaks to the rendering of blendspaces, including separating the graph from the buttons
Context menu changes for the sample details
Changes to AnimationBlueprintLibrary and AnimPose from Jurre to help get the poses during analysis

#jira UE-114512
#rb thomas.sarkanen

#ROBOMERGE-SOURCE: CL 16356830 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v804-16311228)

[CL 16356839 by danny chapman in ue5-release-engine-test branch]
2021-05-17 15:04:09 -04:00
jurre debaare
d694a606af - Move AnimBlueprintLibrary to its own Module (out of AnimModifiers)
- Added FAnimPose, a script-friendly helper structure to generate/read/write evaluated anim poses
- Added API to populate AnimPose from AnimationSequenceBase, USkeleton (ref pose) and AnimBlueprint

#jira none
#rb Thomas.Sarkanen, Danny.Chapman
#preflight 609bb27f2032ee00016b253a

#ROBOMERGE-SOURCE: CL 16297653 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v799-16237190)

[CL 16297659 by jurre debaare in ue5-release-engine-test branch]
2021-05-12 07:33:41 -04:00
Martin Ridgers
ff37feb911 Fix no-unity compile
#rb trivial
#rnx

[CL 15887119 by Martin Ridgers in ue5-main branch]
2021-04-01 05:20:16 -04:00
jurre debaare
349e585908 - Introduces UInterface for UAnimDataController and moves implementation to new AnimationDataController (editor only) module
- Export curve types entirely for use outside of Engine
- Miscellaneous small fixes from UE5 Main
#rb Thomas.Sarkanen
#preflight 6061973e25b98e00019ea154

#ROBOMERGE-OWNER: jurre.debaare
#ROBOMERGE-AUTHOR: jurre.debaare
#ROBOMERGE-SOURCE: CL 15849140 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v786-15839533)
#ROBOMERGE-CONFLICT from-shelf

[CL 15851594 by jurre debaare in ue5-main branch]
2021-03-29 11:34:31 -04:00
Jurre deBaare
8fa69ff878 //UE5/Main - Cook EngineTest Win64 - Assertion failed: !FUObjectThreadContext::Get().IsRoutingPostLoad
#fix update revision GUID for any AnimModifier class its instance during load, rather than forcefully loading them during the CDOs PostLoad
#jira UE-110692
#rb Thomas.Sarkanen

[CL 15710989 by Jurre deBaare in ue5-main branch]
2021-03-16 10:02:58 -04:00
Jurre deBaare
be38ae281c - Added button to Anim Modifiers details customizations to apply all instances of its class to their outer AnimSequences
- Added context menu entry to AnimationSequence asset actions to apply all contained animation modifiers
#rb Thomas.Sarkanen
#preflight 604f343a23863e000183d66b

[CL 15694950 by Jurre deBaare in ue5-main branch]
2021-03-15 06:52:40 -04:00
Jurre deBaare
bc8e1bb823 - Added GetAnimNotifyEventDuration
- Set duration when replacing AnimNotify states
#jira none
#rb Jaren.Peterson

[CL 15679068 by Jurre deBaare in ue5-main branch]
2021-03-11 14:31:55 -04:00
jurre debaare
85a50a5ff9 AnimationBlueprintLibrary does not assign a GUID to created notify events
#fix ensure that GUID is actually populated (previously did not break majorly due to PostSerialize fix-up)
#jira UE-96678
#rb Thomas.Sarkanen

#ROBOMERGE-SOURCE: CL 15560101 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15560440 by jurre debaare in ue5-main branch]
2021-03-01 15:19:31 -04:00
jurre debaare
40ce4dcefe Expose Montages notifies to python via anim blueprint library like anim sequences already are
#jira UE-90241
#fix changed subset of the AnimationBlueprintLibrary API to take an UAnimSequenceBase/UAnimationAsset instead of an UAnimSequence
#misc added redirectors for all cases

#ROBOMERGE-SOURCE: CL 15558241 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15558273 by jurre debaare in ue5-main branch]
2021-03-01 12:25:45 -04:00
Zousar Shaker
3b4c8fc1c5 Automated wrapped object pointer upgrade for Engine + ShooterGame + ShooterGame referenced plugins
#rb none

[CL 15224650 by Zousar Shaker in ue5-main branch]
2021-01-27 17:40:25 -04:00
Jurre deBaare
fad5503605 Moved SmartName FName arrays local to functions, global static is being initialized to NAME_None due to (new) different AnimModifiers module loading order
#rb Thomas.Sarkanen

[CL 15134972 by Jurre deBaare in ue5-main branch]
2021-01-19 07:57:57 -04:00
Jurre deBaare
f24003f082 Animation data MVC refactor
#jira UE-104234
#rb Thomas.Sarkanen, Martin.Wilson, Alexis.Matte, Michael.Zyracki

+ Introduced UAnimDataModel, this currently represents the source data for bone and curve animation. It contains:
    + Bone animation tracks (FBoneAnimationTrack)
        + Key data (coarse)
        + Name
        + Bone tree index
    + Curve data (FAnimationCurveData)
        + Float Curves
        + Transform Curves
    + Play length
    + Sampling rate
        + Used for deriving the expected number of keys/frames when combined with the PlayLength
    + Transient data for supporting backwards compatibility APIs
    + (Dynamic) delegate which broadcasts the mutation Notifies

+ Introduced UAnimDataController, this has sole authority over mutating data contained by UAnimDataModel
    + API functionality allows to transform the contained data in all ways currently expected in the engine.
        + Any mutation will add an undo/redo-able FChange object into the transaction buffer
            + FChangeTransactor helper object allows for keeping track of (compounded) FChange's and inserting them into GUndo
        + Broadcasts change notifies alongside a payload object containing details about the change
            + Interested systems/objects can register to these changes through UAnimDataModel::OnModelModified event
        + Almost all functionality is exposed to both Blueprint and Python scripting
    + Allows for opening 'Brackets', these define the beginning and end of a chain of mutations. Allowing anything registered to OnModelModified to halt responding to the notifies until the (top-level) bracket is closed
    + Undo/redo actions
        + Each mutation to the UAnimDataModel is covered by a 'Action' which is based of FChange and is used to insert a undo/redo-able operation into the transactions buffer

+ Introduced EAnimDataModelNotifType and per-notify payload types. These are used to update views, and any model derived data

+ Introduced FAnimationCurveIdentifier, exposed to scripting, this is used for referencing a curve by name and type when passed to the controller
    + Allows for targetting a specific RichCurve as part of a TransformCurve

+ Introduced FAnimationDataNotifyCollectorused for keeping track of which notifies of type EAnimDataModelNotifType are broadcasted between top-level EAnimDataModelNotifType::BracketOpened and EAnimDataModelNotifType::BracketClosed notifies

+ Added CanTransact to UEngine, returns whether or not a transaction can be made

+ Added UAnimCompositeBase::SetCompositeLength, used for runtime changing of play length value

+ Animation Sequence helpers, containing 'helper' functionality for both AnimSequence and AnimDataModel

* Animation Sequence Base
    + virtual PopulateModel, called during upgrade path for converting existing (legacy) data to the new UAnimDataModel data
    + virtual OnModelModified, registered to the Model's OnModified event to handle any Notifies and payloads
    + Added UAnimDataModel sub-object (editor only)
    + Added UAnimDataController instance (transient and editor only)
    + FAnimationDataNotifyCollector to keep track of model bracketed notifies
    * Deprecated
        * SetSequenceLength()
        * RefreshCurveData()
        * MarkRawDataAsModified()
        * RegisterOnAnimCurvesChanged()
        * UnregisterOnAnimCurvesChanged()
        * UnregisterOnAnimTrackCurvesChanged()
        * RegisterOnAnimTrackCurvesChanged()
        * Public access to RawCurveData

* Animation Sequence
    + Implements PopulateModel/OnModelModified for AnimationSequence related data
    + Added TargetFrameRate, currently locked to the initial sampling rate, but allows for resampling the UAnimDataModel data according to the set rate
    + Added NumberOfSampledKeys (editor only), populated by resampling process
    + Added NumberOfSampledFrames (editor only), populated by resampling process
    + Added ResampledAnimationTrackData (editor only and transient), populated by resampling process
    + Added bBlockCompressionRequests (editor only), used for blocking compression during automation tests
    * Deprecated
        * SetNumberOfSampledKeys()
        * MarkRawDataAsModified()
        * GetRawAnimationData()
        * GetAnimationTrackNames()
        * AddNewRawTrack()
        * GetRawTrackToSkeletonMapTable()
        * GetRawAnimationTrack()
        * GetRawAnimationTrack()
        * UpdateFrameRate()
        * ExtractBoneTransform()
        * CompressRawAnimData()
        * GetSkeletonIndexFromRawDataTrackIndex()
        * RecycleAnimSequence()
        * CleanAnimSequenceForImport()
        * CopyNotifies()
        * PostProcessSequence()
        * AddLoopingInterpolation()
        * RemoveAllTracks()
        * DoesContainTransformCurves()
        * InsertFramesToRawAnimData()
        * CropRawAnimData()
        * RemoveTrack()
        * InsertTrack()
        * ResizeSequence()
        * Non-editor access to GetUncompressedRawSize()
        * Non-editor access to GetApproxRawSize()
        * Public access to UpdateCompressedCurveName()
        * NumberOfKeys
        * SamplingFrameRate
        * TrackToSkeletonMapTable
        * RawAnimationData
        * AnimationTrackNames

* Animation Streamable
    * Model from source Sequence is duplicated rather than copying animation data

* Deprecated ERawCurveTrackTypes::RCT_Vector (marked as hidden)

+ Added automated test for
    + All script exposed controller functionality
    + Undo/redo actions
* Updated existing AnimSequence tests with deprecation and new expected data

+ Base data for compression is now populated from the 'resampled' version stored on the AnimSequence
+ Data cleanup and validation is now performed during compression
    + Track sanitization is now performed during compression (normalizing Quats and clamping near-zero values to zero)
    + Key reduction
    + Invalid track (missing bone from skeleton) removal
    + Curve name validation against skeleton
* Replaced RawCurves with Float curves
* Updated DDC key
- Removed all Guid generation related functionality (now part of the model)

* AnimSequenceBase model registers to AnimModel's notify event, used for refreshing the tracks
    * Replaces the in-place calling of RefreshTracks()
* All curve tracks now hold a const CurveType* rather than a CurveType*/& for introspection of its data
    + Any mutations now go through the controller API
    + Uses AnimationCurveIdentifier to set Transform's per-channel tracks
* RichCurveEditorModelNamed conformed to model/controller
    + Any modifications are applied to an temporary CurveType which always contains a copy of the const-ptr after any previous mutation
    + Registers to the outer AnimModel's notify event, used for updating the cached curve data
    + Registers to CurveModifiedDelegate, used for copying the temp curve data to the model using SetCurveKeys
        * Not-ideal but point that I got to for V1
        * Would be replaced with either refactoring FRichCurve to be MVC like, or by calling UAnimDataController functionality from an implementation of FRichCurveEditorModel

* Mark FChange overrides as final for swap/command change permutations
* Changed FCompoundChange GetDescription to return concatenation of all sub-changes
* Added GetDescription to FTransaction which returns the ToString() value of any contained FChange entries.
    * Entries in SUndoHistory tab now have a ToolTip showing the GetDescription() value
+ FChangeTransactor helper object allows for keeping track of (compounded) FChange's and inserting them into GUndo

* Deprecation handling, conforming code to new APIs and exposing structure/objects/properties to scripting
* Conforming AnimSequence importing from FBX to Model/Controller changes

[CL 15106211 by Jurre deBaare in ue5-main branch]
2021-01-15 06:41:11 -04:00
Alexis Matte
73d83c6a38 To protect the skeletalmesh when using async operations like build or re-import we deprecate all public member variables of USkeletalMesh class and create the necessary getter and setter. Those member will stay public but will be move to private in a future release.
Adding a public member to USkeletalMesh class is now prohibed since it can break asynchronous operations that will be added next to this submit.

#rb danny.couture
#jira UEENT-3936
#rnx

[CL 14812920 by Alexis Matte in ue5-main branch]
2020-11-25 11:17:08 -04:00
sebastian nordgren
c678b96a4b FDetailsViewArgs 8 parameter defaulted constructor deprecated and all usages fixed.
#rb lauren.barnes

[CL 14750682 by sebastian nordgren in ue5-main branch]
2020-11-16 08:16:15 -04:00
Jurre deBaare
6f3438b57a UAnimSequence:
- Deprecated NumFrames instead added NumberOfKeys (data is copied over during serialization patch up)
- Deprecated GetNumberOfFrames and GetRawNumberOfFrames instead added GetNumberOfSampledKeys
- Deprecated SetRawNumberOfFrames and instead added SetNumberOfSampledKeys
- Added SamplingFrameRate (FFrameRate), which is populated according to the sequence's actual number of frames and length
- Changed some behaviour to use FFrameRate API to calculate frame number / timings
- Deprecated GetFrameRate and instead added GetSamplingFrameRate
- Fixed uses where NumFrames was assumed to contain the number of frames rather than the number of keys (ResizeSequence, AddLoopingInterpolation, CropAnimation, InsertKeysIntoRawData)

UAnimStreamable:
- Deprecated NumFrames instead added NumberOfKeys (data is copied over during serialization patch up)

ITimeManagementModule:
- Exposed GetCommonFrameRates through the abstract interface to get around circular Engine module dependency

#jira UE-102191
#rb Martin.Wilson

[CL 14608938 by Jurre deBaare in ue5-main branch]
2020-10-29 09:47:22 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
Jurre deBaare
ea7a43d36e Momentum: Deprecating public access to SequenceLength
+ Added SetSequenceLength
    + Moved GetPlayLength virtaul from AnimSequenceBase to AnimationAsset and deprecated GetMaxCurrentTime (only used in a single place)
#rb Martin.Wilson

[CL 14298631 by Jurre deBaare in ue5-main branch]
2020-09-11 10:31:52 -04:00
Jurre deBaare
62f0aa213f Momentum: Removing SourceAnimationData and doing animation layering bake during compression
#jira UEA-675
#rb Martin.Wilson

[CL 14298238 by Jurre deBaare in ue5-main branch]
2020-09-11 09:30:09 -04:00
brooke hubert
48113fc77e Adding EditorFramework to build.cs files
#rnx
#Jira UE-96448
#rb chris.gagnon

[CL 14114839 by brooke hubert in ue5-main branch]
2020-08-14 13:24:16 -04:00