There does appear to be some redundancy there.
In FAnimInstanceProxy there are two members SkelMeshCompLocalToWorld and also ComponentTransform both apparently caching the same component transform. There is also a member called SkeletalMeshComponent that (surprise) stores a reference to the SkeleletalMeshComponent but still throughout the code its use is inconsistent many times concurring with InAnimInstance->GetOwningComponent(). For instance
void FAnimInstanceProxy::Initialize(UAnimInstance* InAnimInstance)
{
...
if (const USkeletalMeshComponent* SkelMeshComp = InAnimInstance->GetOwningComponent())
{
ComponentTransform = SkelMeshComp->GetComponentTransform();
ComponentRelativeTransform = SkeletalMeshComponent->GetRelativeTransform();
const AActor* OwningActor = SkeletalMeshComponent->GetOwner();
ActorTransform = OwningActor ? OwningActor->GetActorTransform() : FTransform::Identity;
}
else
{
ComponentTransform = FTransform::Identity;
ComponentRelativeTransform = FTransform::Identity;
ActorTransform = FTransform::Identity;
}
}
What’s going on here?