Requested backout by Thomas due to CL36699932 backout.
[FYI] Thomas.Sarkanen
Original CL Desc
-----------------------------------------------------------------
Fixed rewiring animation blueprint nodes occasionally not picking up changes correctly
When rewiring nodes of the same type (say two sequence players each playing different animations), depending on the combination of default values and the current value in the running instance, re-instancing could potentially end up not giving the user what they expect (say, playing a different animation). This is because nodes are given numeric property names during compilation, and distinct nodes can be considered 'the same' depending on how nodes are rewired and processed. When it comes to reinstancing, the state of the node in the existing instance can end up 'winning', despite the node's info coming from a different source.
The solution to this is to uniquely name each node in an invariant way according to the source UEdGraphNode that they come from. In this case, to preserve name table size, I've chosen to use the hash of the node's GUID so the resulting FName can continue to just use a numeric extension rather than a whole new entry.
#jira UE-221734
[RN] Fixed rewiring animation blueprint nodes occasionally not picking up changes correctly
#rb Nicholas.Frechette
#tests PIE, Anim BP Compile
[CL 36766134 by daren cheng in 5.5 branch]
When rewiring nodes of the same type (say two sequence players each playing different animations), depending on the combination of default values and the current value in the running instance, re-instancing could potentially end up not giving the user what they expect (say, playing a different animation). This is because nodes are given numeric property names during compilation, and distinct nodes can be considered 'the same' depending on how nodes are rewired and processed. When it comes to reinstancing, the state of the node in the existing instance can end up 'winning', despite the node's info coming from a different source.
The solution to this is to uniquely name each node in an invariant way according to the source UEdGraphNode that they come from. In this case, to preserve name table size, I've chosen to use the hash of the node's GUID so the resulting FName can continue to just use a numeric extension rather than a whole new entry.
#jira UE-221734
[RN] Fixed rewiring animation blueprint nodes occasionally not picking up changes correctly
#rb Nicholas.Frechette
[CL 36747294 by thomas sarkanen in 5.5 branch]
Implement function BP rename handling on a per-node basis, similar to existing variable rename handing
Move to using FBlueprintEditorUtils::GetMostUpToDateClass for property access in-editor. This ensures that any local renames are picked up prior to recompilation.
#jira UE-204823
#rb jaime.cifuentes, Phillip.Kavan
#changelist validated
#virtualized
[CL 31251596 by thomas sarkanen in ue5-main branch]
Added a new anim node: AnimNext Parameters. This injects parameters into the AnimNext stack for all leafwards nodes.
Added a new way of binding to parameters on anim nodes.
- Added indirection to UAnimGraphNode_Base to allow different 'binding types' to be authored by deriving from UAnimGraphNodeBinding
- Added new binding type for AnimNext parameters
- Moved existing binding code (inc UI widget creation) into UAnimGraphNodeBinding_Base
- Binding types can be selected on a per-node or per-anim BP basis
Reworked FParamStack API a little
- Allow for better error checking when pushing/popping stack layers. Pushed layers can now only be subsequently popped by passing in the handle of the pushed layer.
- Standalone layers are now wrapped in an opaque handle rather than returning a unique ptr
- GetParamData APIs now perform more involved type checking, allowing derived object types & type conversions to be implemented
Improved parameter type sandboxing for automated tests. If running low-level type tests while execution was happening on another thread, the editor could crash because of invalidating already-existing types.
Lots of other small fixes to get workflows nicer and end-to-end functionality working
#rb Nicholas.Frechette,Jaime.Cifuentes,Jurre.deBaare
[CL 26455905 by thomas sarkanen in ue5-main branch]
Additional changes:
- Added warnings for users using anim state events since we want to push towards using the state node functions.
- Added support for anim nodes to show any bound functions and not have them hardcoded.
- Added base context type for FAnimExecutionContext.
- Now users can specify the string for the default binding name of a function member reference in a BP by using the "DefaultBindingName" metadata tag. This will give the functionality to avoid having the default binding name be "NewFunction" and instead use the input string from the metadata tag.
#jira UE-184572
#rb Thomas.Sarkanen, jose.villarroel, aaron.cox
#preflight 646e6a836c2a2532b1f91efd
[CL 25631664 by roland munguia in ue5-main branch]
Adds compiler checks to alert content creators to fix their content
Adds runtime parameter size checks to ensure we dont call functions with an incorrect sized set of parameters
#rb Nicholas.Frechette
#preflight 640200923206d45d2018d411
[CL 24499844 by thomas sarkanen in ue5-main branch]
* Only nodes which have been setup to have drawable elements should be drawn when pose watched, such as 'RigidBody'.
* Anim nodes with custom edit modes should only draw their widgets when explicitly selected or override IAnimNodeEditMode::SupportsPoseWatch
#jira 165766
#rb thomas.sarkanen
#preflight 63514130047f3570adddd035
[CL 22655755 by lucas dower in ue5-main branch]
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]
- Pose watches can now contain elements which represent different asspects of an anim nodes debug draw (i.e. bodies and constraints in RBAN)
- Elements can be used to enable anim node debug draw even when a node is not selected, acting in the same way as the previous pose watches
- The previous Pose watch behavior is now provided by an element within a pose watch
- RBAN nodes now make use of Pose Watch Elements
- Moved skeleton draw parameter UPROPERTIES from PoseWatch to specialised PoseWatchPoseElement class
#rb [at]Thomas.Sarkanen, [at]Lucas.Dower
#preflight 62d6a3e43c3df323901fca27
#ROBOMERGE-AUTHOR: nick.brett
#ROBOMERGE-SOURCE: CL 21174786 via CL 21175779 via CL 21181135
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21192394 by nick brett in ue5-main branch]
#rb Jurre.deBaare
#ROBOMERGE-AUTHOR: thomas.sarkanen
#ROBOMERGE-SOURCE: CL 18918369 via CL 18918381 via CL 18918386 via CL 18922642 via CL 18923567
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v916-18915374)
[CL 18923672 by thomas sarkanen in ue5-main branch]
- Removed cached USkeletalMeshComponent* from AnimGraphNode as we can now get it from AnimGraphNode_Base
- Add a templatized version of AnimGraphNode_Base::GetDebuggedAnimNode() that allows retrival of derived node types
- Can now calculate chain bones without waiting for the node to be compiled - removed associated warning from UI
- Prevent Copy+Paste of bone names in chain bone array, improving workflow
- Ensure that changing bound bone name does not reset physics body parameters, improving workflow
- Improve chain body UI
[REVIEW] [at]Thomas.Sarkanen
[FYI] [at]Charles.Anderson
#ROBOMERGE-OWNER: nick.brett
#ROBOMERGE-AUTHOR: nick.brett
#ROBOMERGE-SOURCE: CL 18903371 via CL 18903392 via CL 18903410 via CL 18915322 via CL 18915359
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v915-18905420)
[CL 18915362 by nick brett in ue5-main branch]
Nested property validity filter (checking to see if an entry in the menu has compatible sub-menus) is now performed for functions.
Prevented UObject types from being bound to unrelated types via the menu (now does a IsChildOf check - previously you could attempt to bind a UAnimSequence to an AActor!)
Display 'display name' for script properties/functions (also use ScriptName for native ones if available).
#jira UE-126829 - Property Access with UStructs has different "compatibility" visibility than other types
#jira UE-125003 - Unable to Access Transform on Character Member via Property Access
#jira UE-132802 - Property Access shows mangled names for Blueprint-defined struct members
#rb Jurre.deBaare
#preflight 61ea79adf1438e8a4b1c71d2
#ROBOMERGE-AUTHOR: thomas.sarkanen
#ROBOMERGE-SOURCE: CL 18687397 in //UE5/Release-5.0/... via CL 18687402 via CL 18687407
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v902-18672795)
[CL 18687412 by thomas sarkanen in ue5-main branch]