Quick answer: Property must be UPROPERTY(BlueprintReadOnly) public; no BlueprintGetter; no pointer chain.
Anim BP shows yellow warning: not on fast path. Reading Character.GetVelocity().Size2D() chains accessors and a function call.
The Fix
// AnimInstance subclass
UPROPERTY(BlueprintReadOnly, Category="Animation")
float Speed = 0.f;
UPROPERTY(BlueprintReadOnly)
bool bIsFalling = false;
virtual void NativeUpdateAnimation(float Dt) override {
Super::NativeUpdateAnimation(Dt);
auto* C = TryGetPawnOwner();
if (!C) return;
Speed = C->GetVelocity().Size2D();
bIsFalling = C->GetCharacterMovement()->IsFalling();
}
NativeUpdateAnimation runs on game thread; reads game state. AnimGraph reads cached members on fast path.
Verifying
Yellow warning gone. AnimGraph compile log shows fast-path success.
“Cache. Read direct. Fastpath.”
Related Issues
For Property Access threading, see threading. For cached pose, see cached pose.
Direct fields. Fastpath.