[Bug] VRC Avatar Desc.'s Colliders do not copy and paste transform references correctly.
Sable7
When copying and pasting a whole VRC Avatar Descriptor component to a different avatar, the colliders transform references (hands, fingers, torso, feet, head) do not update to reference the new avatar's transforms for Custom-set colliders.
I had an issue where I wanted to quickly transfer all the NativeFT work I did to another one of my avatars in a different outfit. So I copied and pasted the updated VRC Avi Desc. from the finished avatar to another avatar. Uploaded that new avatar, and found out I couldn't interact with any PhysBones. Found out it was because the colliders failed to copy over the correct transform references as expected when I copied and pasted the descriptor.
If a collider is set to Custom, the internal transform reference to where that collider is supposed to be, maintains the previous avatar transform's reference instead of the new avatar's respective transform.
If the collider is set to Automatic, the copy and pasting works just fine.
This happens to both VRC Avi Desc components being copied and pasted as a new component, or pasting values into a pre-existing component.
Steps to recreate:
- Create an avatar that uses at least one VRC Avatar Descriptor collider set to Custom.
- Copy the VRC Avatar Descriptor component off that avatar.
- Paste that VRC Avatar Descriptor component to a new avatar.
- Move the new avatar to observe that the Custom collider does not follow the new avatar, only the old copied-from, avatar.
See included video where, in a fresh project with no extra plug-ins (other than VRC Light Volume's), I copy and paste a VRC Avatar Descriptor component onto a fresh new avatar. But, when I select and move that new avatar, the colliders set to Custom (head, hands, feet, fingers) are stuck to the old avatar. The Torso collider was set to Automatic, and correctly follows my avatar after being copied over.
It might just require updating each
ColliderConfig
's transform
by calling Animator.GetBoneTransform(<insert correct humanoid bone>)
, on the descriptor's OnValidate()
or Reset()
or whatever better method there is to detect copying and pasting. (Though this might break collider stealing features of Modular Avatar or Dark's Avatar Optimizer... maybe not, idk)Log In