mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-03-10 07:44:57 +08:00
chore: preserve outfit side PhysBone even if the bone names match
This commit is contained in:
parent
ef17cbbbf9
commit
ff28d43671
@ -40,6 +40,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
{
|
||||
private ndmf.BuildContext frameworkContext;
|
||||
private BuildContext context;
|
||||
private VRCPhysBone[] physBones;
|
||||
private BoneDatabase BoneDatabase = new BoneDatabase();
|
||||
|
||||
private PathMappings PathMappings => frameworkContext.Extension<AnimationServicesContext>()
|
||||
@ -52,6 +53,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
{
|
||||
this.frameworkContext = context;
|
||||
this.context = context.Extension<ModularAvatarContext>().BuildContext;
|
||||
this.physBones = avatarGameObject.transform.GetComponentsInChildren<VRCPhysBone>(true);
|
||||
|
||||
var mergeArmatures =
|
||||
avatarGameObject.transform.GetComponentsInChildren<ModularAvatarMergeArmature>(true);
|
||||
@ -338,7 +340,8 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
var targetObjectName = childName.Substring(config.prefix.Length,
|
||||
childName.Length - config.prefix.Length - config.suffix.Length);
|
||||
var targetObject = newParent.transform.Find(targetObjectName);
|
||||
if (targetObject != null)
|
||||
// Zip merge bones if the names match and the outfit side is not affected by its own PhysBone.
|
||||
if (targetObject != null && !IsAffectedByPhysBone(child))
|
||||
{
|
||||
childNewParent = targetObject.gameObject;
|
||||
shouldZip = true;
|
||||
@ -350,6 +353,11 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsAffectedByPhysBone(Transform target)
|
||||
{
|
||||
return physBones.Any(x => target.IsChildOf(x.GetRootTransform()) && !x.ignoreTransforms.Any(target.IsChildOf));
|
||||
}
|
||||
|
||||
Transform FindOriginalParent(Transform merged)
|
||||
{
|
||||
while (merged != null && thisPassAdded.Contains(merged)) merged = merged.parent;
|
||||
|
Loading…
Reference in New Issue
Block a user