diff --git a/Source/Engine/Animations/Graph/AnimGraph.cpp b/Source/Engine/Animations/Graph/AnimGraph.cpp
index bd4d63567..41d9a3589 100644
--- a/Source/Engine/Animations/Graph/AnimGraph.cpp
+++ b/Source/Engine/Animations/Graph/AnimGraph.cpp
@@ -273,6 +273,9 @@ void AnimGraphExecutor::Update(AnimGraphInstanceData& data, float dt)
animResult = GetEmptyNodes();
}
+ // Allow for external override of the local pose (eg. by the ragdoll)
+ data.LocalPoseOverride(animResult);
+
// Calculate the global poses for the skeleton nodes
{
ANIM_GRAPH_PROFILE_EVENT("Global Pose");
diff --git a/Source/Engine/Animations/Graph/AnimGraph.h b/Source/Engine/Animations/Graph/AnimGraph.h
index 3a472d223..353422ddd 100644
--- a/Source/Engine/Animations/Graph/AnimGraph.h
+++ b/Source/Engine/Animations/Graph/AnimGraph.h
@@ -75,7 +75,7 @@ struct RootMotionData
/// Container for skeleton nodes transformation hierarchy and any other required data.
/// Unified layout for both local and model transformation spaces.
///
-struct AnimGraphImpulse
+struct FLAXENGINE_API AnimGraphImpulse
{
///
/// The skeleton nodes transformation hierarchy nodes. Size always matches the Anim Graph skeleton description.
@@ -245,7 +245,7 @@ public:
///
/// The animation graph instance data storage. Required to update the animation graph.
///
-class AnimGraphInstanceData
+class FLAXENGINE_API AnimGraphInstanceData
{
public:
@@ -347,6 +347,11 @@ public:
///
ScriptingObject* Object;
+ ///
+ /// The custom event called after local pose evaluation.
+ ///
+ Delegate LocalPoseOverride;
+
public:
///