* fix: retarget is not performed if rootBone is the only bone to be retargeted
* fix: MeshRetargeter may cause NRE if mesh is null
* fix: MeshRetargeter is not working if sharedMesh is null
* test: add test case for SkinnedMeshRenderer only with rootBone
* test: fix RootBoneOnly test
* test: fix expected and actual
* test: add test for SkinnedMeshRenderer without mesh
This adds support for KokuriRuru, which uses `Ankle_L`/`Ankle_R` for foot bones, and the finger bones generated with the regex replacement `"([A-Za-z]+?)([1-3]_[LR])"` → `"$1$2", "$1Finger$2"`. (Except for thumbs, which still use `Thumb[1-3]_L` not `ThumbFinger[1-3]_L`. This is left in, as another avatar may use this naming.)
This setting is set to _off_ on some imported animation files;
in this case, tangent data is not used and the curve is interpolated linearly.
Previously, we would sometimes set this to on as part of various animation
manipulations we perform in MA processing; this broke some avatars, e.g. "Fluria".
This doesn't fully close#217, but it's an improvement. Fully fixing it will require reworking the UI fully (or getting unity to fix their terrible code :/)
It seems that sometimes static initializers are created before the icon annotations are updated. This change checks for this case, and defers the icon-disabling until after the necessary annotation records are created.
Since the icon isn't MIT-licensed, this change replaces it in the dev
repo with a placeholder and adds the real icon back in at package build
time (like we do with the main logo image).
The previous logic failed when duplicate PBs explicitly specify their root transform.
This change rewrites this logic and expands the cases in which PBs are pruned.