Description

When used as part of the fast path in an ABP, variable Blueprint Getters are not used. If something with a getter that does not conform to or is supported by fast path, is used then fast path should be disabled.

Steps to Reproduce

Create a C++ class from a UAnimInstance

Add two UAnimSequence variables.

Create and assign a BlueprintGetter function for the first variable that returns the second.

Create an ABP from the C++ class, and assign two different UAnimSequences to the variables.

In the AnimGraph, play the first sequence and in the event graph print its name.

Result: The first sequence is played(fast path) and the second sequence is printed

Expected: The second sequence is played and printed

 

Nativeize the ABP and recompile it.

Result: The second sequence(non fast-path) is played and printed

 

 

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimInstance.h"
#include "MyAnimInstance.generated.h"

/**
*
*/
UCLASS(transient, Blueprintable, hideCategories = AnimInstance, BlueprintType, meta = (BlueprintThreadSafe), Within = SkeletalMeshComponent)
class EDITORTESTS_API UMyAnimInstance : public UAnimInstance
{
GENERATED_BODY()

private:
UPROPERTY(EditAnywhere, BlueprintGetter = GetTestSequence1)
class UAnimSequence* TestSequence1;

UPROPERTY(EditAnywhere)
class UAnimSequence* TestSequence2;

public:
UFUNCTION(BlueprintGetter)
UAnimSequence* GetTestSequence1() const
{
return TestSequence2; // returns TestSequence2 instead of 1.
}
};

 

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-87380 in the post.

1
Login to Vote

Fixed
ComponentOLD - Anim
Affects Versions4.234.24
Target Fix4.26
Fix Commit13933751
CreatedJan 23, 2020
ResolvedAug 27, 2020
UpdatedApr 28, 2021