* feat: inferring prefix/suffix now supports infer with HeuristicBoneMapper
* feat: inferring prefix/suffix is now triggered when prefix/suffix is empty and merge target changed
* chore: add comment for inferring prefix/suffix with HeuristicBoneMapper
* feat: support using Humanoid Rig on RenameBonesByHeuristic
* feat: support using cloth's Humanoid Rig on merge_armature.adjust_names
* feat: support outfits' hips in one more deep place
* chore: refine condition on Heuristic Bone Mapper's exact humanoid bone matching
* chore: unify the process for get outfit's humanoid bones
* chore: rename variable name to clarify means
* chore: use InitializeOnLoadMethod instead of reflection to get boneNamePattern from Editor Assembly
* test: add some tests for SetupOutfit and InferPrefixSuffix
* Disable compilation for use in Unity 6 (6000.0.20f1):
- Do not compile some classes and code paths in non-VRChat projects.
- This has been tested in Unity 6 (6000.0.20f1).
* Fix hide internal components in Unity 6:
- [AddComponentMenu("")] does not work in Unity 6.
- Replace it with [AddComponentMenu("/")]
- This alternative is confirmed to also work in Unity 2022.
---------
Co-authored-by: Haï~ <hai-vr@users.noreply.github.com>
Co-authored-by: bd_ <bd_@nadena.dev>
* feat: A/T Pose conversion on "Reset position to base avatar"
* chore: reorder posReset options
* chore: unify FixAPose functions into SetupOutfit.FixAPose
This change reworks delete handling to be more consistent with other properties,
by treating it as a virtual property (`deletedShape.{blendshapeName}`) instead of
a weird additional field of blendshape keys. This then fixes a number of issues
(e.g. broken preview for delete keys).
Fixes: #1253
Changes to pass ordering caused Merge Armature to destroy menus before being
processed by Menu Installer; fix this by hoisting menu generation to occur within
the animation services context, before Merge Armature runs. This is safe because
the menu installer pass does not interact with the avatar's animator controllers
directly.
Apparently, it's safe to use Unity objects as keys in HashMaps, and doing
so actually fixes some edge cases where assets are recreated as a new C# object.
The scale adjuster preview system reparented proxy renderers under proxy
bones, in order to handle null root bones and MeshRenderers. However, it
then destroyed the entire proxy bone hierarchy, taking all proxy renderers
with it. This change instead tracks proxies, and reparents them back to the
root to avoid this issue.
Closes: #1177