Commit Graph

605 Commits

Author SHA1 Message Date
thomas sarkanen
e152da867b Fixed LOCTEXT conflict in LinkedAnimLayerNode
#jira UE-165773
#rb Jaime.Cifuentes
#preflight 633c33aff96f5ad403a2df41

[CL 22332055 by thomas sarkanen in ue5-main branch]
2022-10-04 12:04:24 -04:00
thomas sarkanen
13812111b2 Fix renaming issues with linked anim layers
Move linked layers and graphs to use FMemberReference to reference the stub function used to generate node pins

#jira UE-132472
#rb Jurre.deBaare
#preflight 63358f5ee410691606b6c915

[CL 22260921 by thomas sarkanen in ue5-main branch]
2022-09-29 20:38:46 -04:00
phillip kavan
7ef9563646 Don't allow composite nodes to be pasted into Blueprint graphs that aren't schema-compatible.
Change summary:
- Added UEdGraphSchema_K2::DoesSupportCollapsedNodes() as an overridable API for K2-based schema types. Also added overrides for derived schemas that do not currently support collapsed subgraphs as a feature (e.g. AnimBPs).
- Added a UK2Node_Composite::CanCreateUnderSpecifiedSchema() override. This will be called when determining node types that can be created from clipboard content (see FGraphObjectTextFactory in EdGraphUtilities.cpp).
- Modified UK2Node_Composite::PostPasteNode() to exclude nodes that are not schema-compatible from the pasted subgraph. Also updated to reassign the subgraph schema to match the target graph.
- Modified FEdGraphUtilities::MergeChildrenGraphsIn() to emit an error to the message log when a subgraph cannot be merged into a parent graph due to schema incompatibility. This also adds an appropriate error context to the source node(s).
- Modified FKismetCompilerContext::ProcessOneFunctionGraph() to early exit if we fail to merge subgraphs while processing the intermediate function graph. This prevents us from attempting to further compile an intermediate graph that's in an invalid state, which previously would lead to an ensure() and later fail due to a non-specific compile error.

#jira UE-157885
#rb Dan.OConnor, Thomas.Sarkanen
#preflight 6331e2fd10030508069622f2

[CL 22205520 by phillip kavan in ue5-main branch]
2022-09-27 10:17:29 -04:00
frederick lupien
9c38bfb87c Allow self layer nodes in linked anim layer graphs.
Added compilation check for linked layers circular references and indirectly nested linked layers

[REVIEW] [at]Thomas.Sarkanen
#tests Compile all project animation blueprints

[CL 22203056 by frederick lupien in ue5-main branch]
2022-09-27 06:56:42 -04:00
jose villarroel
d6c59eaa35 Layered Blend Per Bone: Fix for blend masks not populating correctly on load
#jira UE-162984
[REVIEW] [at]Thomas.Sarkanen, [at]Aaron.Cox
#preflight 6331ce7fd747fe52c8aadd48

[CL 22191760 by jose villarroel in ue5-main branch]
2022-09-26 15:20:12 -04:00
thomas sarkanen
af32e124a1 Added the ability to specify blend profiles/masks to the layered blend per bone node
Enables use of layered blends in template animation blueprints

#jira UE-137671
#rb Jose Villarroel
#preflight 632c74aca4769ad714ac21c8

[CL 22145944 by thomas sarkanen in ue5-main branch]
2022-09-22 17:40:51 -04:00
thomas sarkanen
a278aa13e7 Adding or removing an anim layer graph's input pose will now refresh instances without requiring a manual refresh
Also supports renaming and undo/redo of input pose additions/removals

#jira UE-135701
#rb Jurre.deBaare
#preflight 632c24c2b4515b7e22bb1c91

[CL 22144034 by thomas sarkanen in ue5-main branch]
2022-09-22 16:20:10 -04:00
jaime cifuentes
981823850f Enable Random Sequence Player react to automatic transition rules
#rb thomas.sarkanen
#jira UE-160566
#preflight 632ad260826e0c2fe994e9dd

[CL 22112881 by jaime cifuentes in ue5-main branch]
2022-09-21 10:45:04 -04:00
lucas dower
3dbf0b7b83 Fix for copy-pasting nodes dependant upon source state machine state.
#jira UE-135987
#rb thomas.sarkanen
#preflight 632499a18131e92d65ea3f1d

[CL 22054567 by lucas dower in ue5-main branch]
2022-09-16 13:55:52 -04:00
thomas sarkanen
43e50ca6f5 Prevent editing of input parameters on input pose nodes in the main anim graph
Only other layers are allowed pin-based inputs. The legacy linked graph system uses class properties.

#jira UE-145685
#rb Jurre.deBaare
#preflight 63248e688131e92d65e67215

[CL 22052372 by thomas sarkanen in ue5-main branch]
2022-09-16 12:48:26 -04:00
lucas dower
1309fe5371 Compile error fix for missing pose watch include
#rb trivial
#preflight 63244f27f258fccf98b2398d

[CL 22050413 by lucas dower in ue5-main branch]
2022-09-16 11:37:52 -04:00
jaime cifuentes
3d016b7d44 Fixed FAnimNode_LayeredBoneBlend BlendMasks getting out of sync with BlendPoses (fixes older assets with incorrect BlendMasks array size)
Provided by David Bolo

#rb thomas.sarkanen marc.audy
#jira UE-126997
#preflight 6321884c29254beccbb7bbe9

[CL 22003808 by jaime cifuentes in ue5-main branch]
2022-09-14 05:55:52 -04:00
thomas sarkanen
3b09aa4eaf Fix duplication of animation blueprints with custom property bindings producing internal compiler errors
#jira UE-143647
#rb Jurre.deBaare
#preflight 63203e418838676d10db612f

[CL 21986813 by thomas sarkanen in ue5-main branch]
2022-09-13 13:24:35 -04:00
Jurre deBaare
ff0db16d0b Reintroducing AnimationDataModel refactor with additional memory and cooktime optimizations.
**Animation Data Model load/cook time and memory optimizations**
- Added SetKeysOnly to FMovieSceneFloatChannel, allowing to only set value/frames values and skip allocating key handles
- Added EvaluateWithCache to TMovieSceneCurveChannelImpl, allowing to evaluate multiple curves using a caching data structure holding the frame-indices resulting from the FrameTime -> indexes calculationg
- UFKControlRig::GetControlName/GetControlTargetName, added thread_local mapping cache and optimized FName generation
- Made the sequencer bone curve keys 'sparse' again, if constant it just sets the default value for the curve otherwise it is still uniform
- Only resample keys when compressing, and clear them on any significant model changes and when save-during-cook has been completed
- Routed ::Presave for AnimSequencerDataModel directly through to UMovieSceneSignedObject to skip compiling cooked sequencer that that will/should never cooked and packaged
- Added some significant pass-by-reference changes to AnimSequencerModel APIs (passing large arrays by value previously) :doh:
- Optimized GenerateLegacyBoneData

Original CL description:

**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, Mike.Zyracki
#jira UE-131296
#preflight 631f6897a9331c69c3a34d1e

[CL 21980597 by Jurre deBaare in ue5-main branch]
2022-09-13 06:41:15 -04:00
bryan sefcik
f58e75e476 Pass 2 on cleaning up build.cs files.
#jira
#preflight 631b7a79304480f8f8b48580

[CL 21931324 by bryan sefcik in ue5-main branch]
2022-09-09 19:41:38 -04:00
frederick lupien
63fd57b194 Add a context menu option to unexpose all unused pins in LinkedAnimGraph and LinkedAnimLayer nodes in animation blueprints
This is to be able to quickly hide all pins on linked graph nodes based on animation instance that expose a lot of properties

[REVIEW] [at]Thomas.Sarkanen
#tests PIE
#jira UE-156233
[FYI] [at]Paul.McLaurin

[CL 21908860 by frederick lupien in ue5-main branch]
2022-09-08 20:30:49 -04:00
frederick lupien
e24dddeb56 Fix graph template compilation crash when referencing animation assets (sequences, blend spaces, etc)
#jira UE-162997
#rb Thomas.Sarkanen
#tests Graph template compilation

[CL 21891354 by frederick lupien in ue5-main branch]
2022-09-08 07:11:04 -04:00
Robert Millar
dc497f2e2f FNames containing asset paths are deprecated. FSoftObjectPath or FTopLevelAssetPath should be used instead.
Fixups for animation.

#jira UE-161932
#rb halfdan.ingvarsson
#preflight 63181d07980179553e5c8d21

[CL 21841184 by Robert Millar in ue5-main branch]
2022-09-07 00:40:02 -04:00
bryan sefcik
0837230669 Ran IWYU again on half of the Engine/Source/Editor/... source files.
#jira

[CL 21716414 by bryan sefcik in ue5-main branch]
2022-08-30 23:03:03 -04:00
jaime cifuentes
101097fcd1 Animation State Machine UX update (renamed "Add New State Machine" as "State Machine" and removed trailing "..." from all the context options, to be coherent with other UX options
#Jira UE-156485
#rb lucas.dower
#preflight 630e2c62a416f6df25d92124

[CL 21702009 by jaime cifuentes in ue5-main branch]
2022-08-30 11:32:46 -04:00
Keith Yerex
40a5283221 Make double clicking Linked Anim Layer nodes also attach the debugger to the correct anim instance
#rb Jurre.DeBaare
#preflight 6308f2ac990cd1b6a7496d49

[CL 21593455 by Keith Yerex in ue5-main branch]
2022-08-26 13:15:55 -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
Keith Yerex
d3dc8e95a1 fix double click on linked layer node to navigate the the actual linked instance when you are attached and debugging
#rb Thomas.Sarkanen
#preflight 630668fd5a5d4e46246266a2

[CL 21547264 by Keith Yerex in ue5-main branch]
2022-08-24 14:14:53 -04:00
jurre debaare
754fe6e2d7 Ensure that LinkedAnimGraph node name, and graph in MyBlueprint tab reflect the currently previewed instance and its state (e.g. PIE Anim instance, with dynamically linked graph)
#preflight 62ff5394200ff87e07e949f0
#rb Thomas.Sarkanen

[CL 21468246 by jurre debaare in ue5-main branch]
2022-08-19 19:38:25 -04:00
marc audy
a25c77c3cc Bring RES files in line with EM
#rnx

#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 21434216 in //UE5/Release-Engine-Staging/...
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v981-21435820)

[CL 21437233 by marc audy in ue5-main branch]
2022-08-17 21:56:00 -04:00