mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-04-15 17:09:00 +08:00
fix: worldUpObject of AimConstraint and LookAtConstraint is not fixed up
This commit is contained in:
parent
d72e529ad7
commit
175905ebbd
@ -91,6 +91,22 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var c in avatarGameObject.transform.GetComponentsInChildren<AimConstraint>(true))
|
||||||
|
{
|
||||||
|
if (!AddedConstraints.Contains(c))
|
||||||
|
{
|
||||||
|
FixupAimConstraint(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var c in avatarGameObject.transform.GetComponentsInChildren<LookAtConstraint>(true))
|
||||||
|
{
|
||||||
|
if (!AddedConstraints.Contains(c))
|
||||||
|
{
|
||||||
|
FixupLookAtConstraint(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var bone in ToDelete) UnityEngine.Object.DestroyImmediate(bone);
|
foreach (var bone in ToDelete) UnityEngine.Object.DestroyImmediate(bone);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -119,6 +135,38 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void FixupAimConstraint(AimConstraint constraint)
|
||||||
|
{
|
||||||
|
if (constraint.worldUpObject == null) return;
|
||||||
|
if (!BoneRemappings.TryGetValue(constraint.worldUpObject, out var remap)) return;
|
||||||
|
var retarget = BoneDatabase.GetRetargetedBone(remap);
|
||||||
|
|
||||||
|
if (retarget != null)
|
||||||
|
{
|
||||||
|
constraint.worldUpObject = retarget;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
constraint.worldUpObject = remap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FixupLookAtConstraint(LookAtConstraint constraint)
|
||||||
|
{
|
||||||
|
if (constraint.worldUpObject == null) return;
|
||||||
|
if (!BoneRemappings.TryGetValue(constraint.worldUpObject, out var remap)) return;
|
||||||
|
var retarget = BoneDatabase.GetRetargetedBone(remap);
|
||||||
|
|
||||||
|
if (retarget != null)
|
||||||
|
{
|
||||||
|
constraint.worldUpObject = retarget;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
constraint.worldUpObject = remap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void UpdateBoneReferences(Component c, Retargetable retargetable = Retargetable.Disable)
|
private void UpdateBoneReferences(Component c, Retargetable retargetable = Retargetable.Disable)
|
||||||
{
|
{
|
||||||
SerializedObject so = new SerializedObject(c);
|
SerializedObject so = new SerializedObject(c);
|
||||||
@ -360,4 +408,4 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
return retain;
|
return retain;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user