A licensee has reported that the USkinnedMeshComponent::FindClosestBone function does not respect the bRequiresPhysicsAsset parameter, resulting in the bone returning bones that are not part of the physics asset. This is being caused by this line:
bPassPACheck = (PhysAsset->BodySetupIndexMap.FindRef(BoneName) != INDEX_NONE)
The BodySetupIndexMap.FindRef(BoneName) is returning 0 in these cases, which still passes the check as INDEX_NONE is equal to -1.
The licensee has proposed a fix which involves changing the line to the following:
bPassPACheck = (PhysAsset->BodySetupIndexMap.Find(BoneName) != nullptr);
Regression?: No
This code was also present in 4.14
N/A - Code issue
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-43061 in the post.