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

Steps to Reproduce

N/A - Code issue

Have Comments or More Details?

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

Login to Vote

ComponentOLD - Anim
Affects Versions4.144.154.16
Target Fix4.16
Fix Commit3365505
Main Commit3385232
CreatedMar 20, 2017
ResolvedMar 27, 2017
UpdatedApr 27, 2018