Commit Graph

441 Commits

Author SHA1 Message Date
Thomas Sarkanen
e485a55acb Fix various issues with child anim BPs
If a child anim BP is made and is saved without saving its parent, then when the class is reloaded later it will not be able to find the parent's sparse class data in the linker (as it will have been generated again from scratch on load, which doesnt patch the linker until the asset is resaved). This leads to serialization size mismatches.
To address this (and because the sparse class data will always be regenerated as part of compile-on-load), we skip the portion of the CDO's archive that represents the serialized sparse class data if it is null after serialization. It can of course be legitimately null in a lot of cases (say a regular actor Blueprint), but this should have no ill effects and effectively be a seek to the current archive offset.

This CL also fixes a number of child anim BP-related issues. First of all it prevents a crash when accessing out-of-bounds AnimNodeData by ensuring it is correctly duplicated in all circumstances. It also correctly propogates values from root->child sparse class data (in the same manner that anim node data used to be propogated before). This deals with compile-on-load issues where the child classes sparse class data is regenerated without serializing the parent classes sparse class data (see crash fix above).

#jira UE-114674 - Creating a new child anim BP crashes
#rb Fred.Kimberley,Phillip.Kavan,Jurre.deBaare

[CL 16313070 by Thomas Sarkanen in ue5-main branch]
2021-05-13 10:56:35 -04:00
timothy daoust
3b0a5acd3a Fix a mirror node compilation error encountered with the mirror data table is not yet loaded
#jira UE-114952

#rb thomas.sarkanen

[CL 16247196 by timothy daoust in ue5-main branch]
2021-05-10 07:31:57 -04:00
jose villarroel
a0cad3df75 Fix for double click not working with shared transition rules
#review-16199518 @Thomas.Sarkanen
#fyi Caleb.Longmire, Fernando.Coello
#jira none
#rnx

[CL 16209390 by jose villarroel in ue5-main branch]
2021-05-05 13:03:32 -04:00
koray hagen
26af906499 Graph-driven pose warping, with root motion delta flow:
1) Root motion delta flow supported through all anim nodes deriving from FAnimNode_AssetPlayerBase and montages.
2) Stride/Orientation warping feature graph-driven evaluation modes which leverage root motion delta flow (graph-driven slope warping currently disabled).
3) Root motion flow connected to the Animation Warping plugin.
4) Pose Warping test map featuring various motion "styles" connected to pose warping (Motion Matching, Blend Space Graphs/Assets, Sequence Players, Evaluators).

#preflight 6092380a58c4790001a3e9b6
#rb aaron.cox, braeden.shosa, thomas.sarkanen
#jira none
#fyi laurent.delayen

[CL 16208667 by koray hagen in ue5-main branch]
2021-05-05 12:18:35 -04:00
Brandon Schaefer
ec9f8e23d9 Fix reference possibly being invalidated in while loop
#jira none
#rb none
#fyi Thomas.Sarkanen

[CL 16196527 by Brandon Schaefer in ue5-main branch]
2021-05-04 14:01:51 -04:00
timothy daoust
380a6e3e51 Warn if MirrorDataTable used in a MirrorNode is not compatible with the current skeleton
#jira UE-114427

#rb thomas.sarkanen

[CL 16170635 by timothy daoust in ue5-main branch]
2021-04-30 13:45:03 -04:00
Thomas Sarkanen
e3e68d14d4 Fix for renaming issues with animation blueprints
Switches generated structs to be subobjects of the generated class.
Key to this is supporting re-instancing via re-linking the mutable struct before the generated class is linked to allow the correct class layout to be used by serializers. This is because the property links are not preserved with StaticDuplicateObject.

#jira UE-114456 - Crash on loading Animation Blueprint asset that was renamed twice prior to that
#jira UE-114457 - A duplicate is created for an Animation Blueprint asset after its renaming
#rb Jurre.deBaare
#fyi Benn.Gallagher

[CL 16166745 by Thomas Sarkanen in ue5-main branch]
2021-04-30 05:41:57 -04:00
Marc Audy
3cfedaade8 Fix PVS warning V502 when comparing against NAME_None in a trinary
[CL 16137741 by Marc Audy in ue5-main branch]
2021-04-28 01:58:36 -04:00
Thomas Sarkanen
c9a92f12c2 Fix anim BP internal structs showing up in the content browser
#jira none
#rb Jurre.deBaare

[CL 16112747 by Thomas Sarkanen in ue5-main branch]
2021-04-26 06:37:16 -04:00
Thomas Sarkanen
27a6f84b12 Fix crash in cooked games with standalone asset players
Also fix blendspace sync groups not working correctly

#rb Timothy.Daoust
#jira FROST-2365

[CL 16105948 by Thomas Sarkanen in ue5-main branch]
2021-04-23 15:31:02 -04:00
Thomas Sarkanen
e07d421df9 Fix crash in debug where delegate self-unregistration removed lambda underneath itself
#rb Koray.Hagen

[CL 16097046 by Thomas Sarkanen in ue5-main branch]
2021-04-22 15:39:05 -04:00
Thomas Sarkanen
16eee0289d Anim node data/compiler refactor
Per-node constant data is now held on a generated struct as part of sparse class data.
Per-node mutable data (i.e. pin links/property access mappings) is now held on a generated 'mutable data' struct that is compiled as part of the generated class.

The anim BP compiler is now extended more conventionally using UAnimBlueprintExtension, derived from UBlueprintExtension. This directly replaces the older 'compiler handler' pattern that was added in an emergency fashion for 4.26. Anim graph nodes now request their required extensions and these are held on the UAnimBlueprint in the UBlueprint::Extensions array. The Extensions array is potentially refreshed with any node addition or removal. The Extensions array is force-refreshed each time an anim BP is compiled for the first time to deal with newly added or removed requirements.

Const-corrected a bunch of UAnimInstance/FAnimInstanceProxy APIs that rely on (now truly) const data.
Added a split state/constant version of FInputScaleBiasClamp to allow some of its data to be split into constants.
Tweaked alignment/ordering of FPoseLinkBase to save a few bytes per pose link.
Deprecated FAnimNode_Base::OverrideAsset in favor of a more UAnimGraphNode_Base-based approach. Individual nodes can still have runtime overrides via specific accessors. The new approach will also give us the oppurtunity to override multiple assets per node if required in the future.

Moved property access into Engine module & removed event support from it - this was never used.
Reworked property access compilation API a little - construction/lifetime was a bit confusing previously.

Optimized path used to create UK2Node_StructMemberSet nodes in per-node custom events. When using mutable data, the structure used is large and very sparsely connected (i.e. only a few properties are written) so we only create pins that are actually going to be used, rather than creating all of them and conly connecting a few.

Patched the following nodes to use the new data approach:

- Asset players (sequences, blendspaces, aim offsets)
- Blend lists
- Ref poses
- Roots

#rb Jurre.deBaare, Martin.Wilson, Keith.Yerex

[CL 16090510 by Thomas Sarkanen in ue5-main branch]
2021-04-22 04:57:09 -04:00
Thomas Sarkanen
5364bab827 Backing out CL 16071104
[CL 16071592 by Thomas Sarkanen in ue5-main branch]
2021-04-21 08:01:44 -04:00
Thomas Sarkanen
0ddbfb9894 Anim node data/compiler refactor
Per-node constant data is now held on a generated struct as part of sparse class data.
Per-node mutable data (i.e. pin links/property access mappings) is now held on a generated 'mutable data' struct that is compiled as part of the generated class.

The anim BP compiler is now extended more conventionally using UAnimBlueprintExtension, derived from UBlueprintExtension. This directly replaces the older 'compiler handler' pattern that was added in an emergency fashion for 4.26. Anim graph nodes now request their required extensions and these are held on the UAnimBlueprint in the UBlueprint::Extensions array. The Extensions array is potentially refreshed with any node addition or removal. The Extensions array is force-refreshed each time an anim BP is compiled for the first time to deal with newly added or removed requirements.

Const-corrected a bunch of UAnimInstance/FAnimInstanceProxy APIs that rely on (now truly) const data.
Added a split state/constant version of FInputScaleBiasClamp to allow some of its data to be split into constants.
Tweaked alignment/ordering of FPoseLinkBase to save a few bytes per pose link.
Deprecated FAnimNode_Base::OverrideAsset in favor of a more UAnimGraphNode_Base-based approach. Individual nodes can still have runtime overrides via specific accessors. The new approach will also give us the oppurtunity to override multiple assets per node if required in the future.

Moved property access into Engine module & removed event support from it - this was never used.
Includes a thread-safety fix for 4.26 that hasnt made it over to 5.0 yet.
Reworked property access compilation API a little - construction/lifetime was a bit confusing previously.

Optimized path used to create UK2Node_StructMemberSet nodes in per-node custom events. When using mutable data, the structure used is large and very sparsely connected (i.e. only a few properties are written) so we only create pins that are actually going to be used, rather than creating all of them and conly connecting a few.

Patched the following nodes to use the new data approach:

- Asset players (sequences, blendspaces, aim offsets)
- Blend lists
- Ref poses
- Roots

#rb Jurre.deBaare, Martin.Wilson, Keith.Yerex

[CL 16071104 by Thomas Sarkanen in ue5-main branch]
2021-04-21 07:09:28 -04:00
danny chapman
0fba84358e Fix Invalid use of pointer in warning output
#jira UE-113834
#rb thomas.sarkanen

[CL 16060917 by danny chapman in ue5-main branch]
2021-04-20 10:15:49 -04:00
Tim Smith
ff1048a3a7 Added new ReloadEnum method to the NodeDependingOnEnumInterface which will be utilized by the reload system to notify the node that the enumeration has been reloaded and that the given enum is the new address of the enum.
#rb phillip.kavan
#rnx
#preflight 6075cfa00a49b700011f10a3

[CL 15992752 by Tim Smith in ue5-main branch]
2021-04-13 14:52:21 -04:00
Marc Audy
01b7c9f4f5 Merge UE5/RES @ 15958325 to UE5/Main
This represents UE4/Main @ 15913390 and Dev-PerfTest @ 15913304

[CL 15958515 by Marc Audy in ue5-main branch]
2021-04-08 14:32:07 -04:00
mark lintott
7da621dd70 Non-unity fixes
#rb trivial
#preflight 60632f8db4299e0001dbe61c

[CL 15862677 by mark lintott in ue5-main branch]
2021-03-30 11:06:15 -04:00
mark lintott
11a12136ce #jira UE-111647
#rb johan.torp
GetLinkerUE4Version renamed to GetLinkerUEVersion

#ROBOMERGE-SOURCE: CL 15859222 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v786-15839533)

[CL 15859586 by mark lintott in ue5-main branch]
2021-03-30 06:44:49 -04:00
Jurre deBaare
d498271275 UStruct property default initializations
//UE5/Main - UE.EditorAutomation(RunTest=Editor) Win64 - Uninitialized script struct members found AnimGraphAttributes.h and other anim files
#jira UE-110793

//UE5/Main - UE.EditorAutomation(RunTest=Editor) Win64 - Uninitialized script struct members found DataSourceFiltering.h
#jira UE-110804

Fix BlendSpace errors in ShooterGame
#jira UE-111352

#rb Thomas.Sarkanen

[CL 15758350 by Jurre deBaare in ue5-main branch]
2021-03-22 07:53:36 -04:00
jose villarroel
23f73d1dc7 Added state aliasing for the anim graph state machine.
#review-15715574 @Thomas.Sarkanen, @Aaron.Cox
#preflight 6054c8f5c27ab80001b00547

[CL 15749554 by jose villarroel in ue5-main branch]
2021-03-19 14:32:13 -04:00
jose villarroel
d05319a7e9 Fix for crash when opening anim layer interfaces
#review-15712246 @john.vanderburg
#rnx

[CL 15712996 by jose villarroel in ue5-main branch]
2021-03-16 13:25:23 -04:00
timothy daoust
1d2811e0c0 New Animation Mirroring System:
+ UMirrorDataTable stores the bones / notifies / curves to mirror
	* Generates table based on FMirrorFindReplaceExpression in project settings
	* Can be used in any Animation Blueprint with a compatible skeleton
	* Support for self mirroring
	* Shared mirror axis
+ Project Settings for Mirroring Find & Replace Strings
+ FMirrorFindReplaceExpression
	* Find the mirrored name based on a prefix, suffix, or regular expression match
+ FAnimNode_Mirror
	* Inertialization support for blending between mirroring / unmirrored states over a configurable duration
	* Support for different MirrorDataTables (to support partial / full body mirroring)
+ Deprecated old mirroring system (FBoneMirrorExport) in SkeletalMesh

#rb Thomas.Sarkanen

[CL 15580895 by timothy daoust in ue5-main branch]
2021-03-03 08:23:59 -04:00
jurre debaare
ae609d867c UE-77877
Automatically connect Anim node's out exec pin to the following node when placed within an execution chain

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

[CL 15567926 by jurre debaare in ue5-main branch]
2021-03-02 06:49:04 -04:00
thomas sarkanen
938f3b7c91 Fix non-unity CIS
#jira UE-109205 - //UE5/Release-5.0-EarlyAccess - NonUnity Compile UnrealEditor Win64 - BlendSpaceGraph.cpp(10): error C2027: use of undefined type 'UEdGraphSchema'
#rb trivial

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

[CL 15512651 by thomas sarkanen in ue5-main branch]
2021-02-24 05:55:50 -04:00