"Call function" anim node:
- Adds the ability to call functions at different points in the anim graph execution (and under different conditions, e.g. when a branch has started blending in). Only thread-safe functions are allowed to be called.
- Adds a thread-safe override point BlueprintThreadSafeUpdateAnimation, called on worker threads for the main instance and for linked instances when they are relevant in the graph (only one call per frame for linked layer instances).
Subsystems:
- Added new override points pre/post event graph(s) (moved override point for worker thread work to around the thread safe update function call).
Improves property access integration:
- Property access now shows (and allows the user to override) the call site of accesses. This is to allow users to see when their property access calls will be made, hopefully making its use less confusing for power users.
- Tweaked UX for property access nodes and dropdowns.
- Anim node pins now have property access bindings in-line on the pin.
Also adds the abilility for the anim graph to opt-in (via a config flag) to more stringent thread safety checks. Disabled by default for now as this requires content fixup.
#jira UE-115745 - Anim Blueprint Encapsulation
#rb Jurre.deBaare
[CL 16434092 by Thomas Sarkanen in ue5-main branch]
To do this without storing something on the pin itself, extend GetPinMetaData on function call nodes to handle "FunctionOption=PinName" function metadata as metadata for PinName
Modified version of PR #5949
#jira UE-76325
#rb ben.hoffman, marc.audy
#ROBOMERGE-SOURCE: CL 15509455 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)
[CL 15509504 by ben zeigler in ue5-main branch]
Added a new animation graph node that hosts its own UBlendSpaceBase. Modified UBlendSpaceBase to allow for pose links to be evaluated as the sample points.
The new blend space graphs can be spawned from existing UBlendSpace and UBlendSpace1D assets, or they can be created from scratch, or they can be converted from existing blendspace player nodes via the context menu.
Fixed anim node conversion functions so that their transactions work correctly.
Updated FBlueprintEditorUtils::IsGraphNameUnique to allow it to work with any object as the outer, not just UBlueprint. UBlueprint still has a special case for functions and events. This is to support GenerateUniqueGraphName within a scope (e.g. an outer graph).
Formalized the concept of 'node sub-graphs' (as well as the composite node pattern a little). Previously a number of known node types that contained sub-graphs (e.g. UK2Node_Composite) had special case logic for dealing with node/graph deletion etc. Now any node can opt into this behaviour via the GetSubGraphs() override.
Added status bar readouts for the blendspace grid, so we dont have to stuff the prompts into the tooltip any more.
Moved anim BP related APIs out of FBlueprintEditor. They are always used via FAnimationBlueprintEditor.
Refactored graph title bar widget creation out into a function to allow other document tab factories to create it.
Altered breadcrumb trail click callbacks and SMyBlueprint::ExecuteAction to always JumpToHyperLink rather than calling OpenDocument directly. This allows unknown (to FBlueprintEditor) document types that reference objects to be correctly jumped to using the breadcrumb trail. Derived asset editors (i.e. FAnimationBlueprintEditor) can intercept the JumpToHyperlink call to ensure that the correct document is presented (i.e. the correct tab payload is generated).
Instead of making yet another bunch of duplicated code for handling the various alpha blend options, refactored this into FAnimGraphNodeAlphaOptions (for editor code) and FAnimNodeAlphaOptions (for runtime code).
Added OnCopyTermDefaultsToDefaultObject for per-node copying of default values from editor node to runtime node, rather than another special-case in the compiler.
#rb Jurre.deBaare,Phillip.Kavan
[CL 15177316 by Thomas Sarkanen in ue5-main branch]
Adds shortcut of double-click to navigate up. Disabled by default for now - see the BlueprintEditor settings to enable & send feedback
#jira UE-105149
#rb thomas.sarkanen,phillip.kavan
[CL 15082887 by danny chapman in ue5-main branch]
#jira UE-89466
#rb none
#ROBOMERGE-SOURCE: CL 12127370 in //UE4/Release-4.25/... via CL 12127374
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v659-12123632)
[CL 12140305 by frank fella in Main branch]
#jira UE-66256
#rb michael.noland
#ROBOMERGE-SOURCE: CL 11969985 in //UE4/Release-4.25/... via CL 11970121
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)
[CL 11980309 by michael galetzka in Main branch]
Slate - Deprecating float GetRelativeLayoutScale(const FSlotBase& Child, float LayoutScaleMultiplier), Long Live float GetRelativeLayoutScale(const int32 ChildIndex, float LayoutScaleMultiplier), you must also set bHasRelativeLayoutScale to true in your constructor for your SWidget if you need this function called. This removes 2 virtual calls from almost every widget's prepass, and only now requires 1 for every widget that needs to implement GetRelativeLayoutScale, which very few actually do.
Matt.Kuhlenschmidt
#ROBOMERGE-SOURCE: CL 11291134 via CL 11291179 via CL 11291189 via CL 11291196
#ROBOMERGE-BOT: (v647-11244347)
[CL 11291217 by nick darnell in Main branch]