Some of our code recently was relying on SkeletalMeshComponent::IsPostEvaluatingAnimation, similar to a few other spots we’ve seen:
`// Sequencer\MovieSceneControlRigParameterTemplate.cpp 918 37
if (!SkeletalMeshComponent->IsPostEvaluatingAnimation())
// Runtime\MovieSceneTracks\Private\Systems\MovieSceneSkeletalAnimationSystem.cpp 145 19
if (!Component->IsPostEvaluatingAnimation())
// Runtime\MovieSceneTracks\Private\Systems\MovieSceneSkeletalAnimationSystem.cpp 584 31
if (!SkeletalMeshComponent->IsPostEvaluatingAnimation() &&
// Runtime\Experimental\Animation\Constraints\Private\TransformableHandleUtils.cpp 37 31
if (InSkeletalMeshComponent->IsPostEvaluatingAnimation())`
if the build has DO_CHECK 0, though, this will always return false. It seems like the guard should be outside the DO_CHECK ?
`void USkeletalMeshComponent::PostAnimEvaluation(FAnimationEvaluationContext& EvaluationContext)
{
#if DO_CHECK
checkf(!bPostEvaluatingAnimation, TEXT(“PostAnimEvaluation already in progress, recursion detected for SkeletalMeshComponent [%s], AnimInstance [%s]”), *GetPathNameSafe(this), *GetPathNameSafe(EvaluationContext.AnimInstance));
//FGuardValue_Bitfield(bPostEvaluatingAnimation, true); // removed
#endif
FGuardValue_Bitfield(bPostEvaluatingAnimation, true); // added
SCOPE_CYCLE_COUNTER(STAT_PostAnimEvaluation);`