Use VRCParentConstraint instead of constraint hack

for world fixed objects when available
This commit is contained in:
JLChnToZ 2024-10-30 22:57:21 +08:00
parent 91b4414e60
commit 7a1637f4ce

View File

@ -86,6 +86,20 @@ namespace nadena.dev.modular_avatar.core.editor
obj.transform.localRotation = Quaternion.identity;
obj.transform.localScale = Vector3.one;
#if MA_VRCSDK3_AVATARS_3_7_0_OR_NEWER
var constraint = obj.AddComponent(
System.Type.GetType("VRC.SDK3.Dynamics.Constraint.Components.VRCParentConstraint, VRC.SDK3.Dynamics.Constraint")
) as VRC.Dynamics.ManagedTypes.VRCParentConstraintBase;
constraint.IsActive = true;
constraint.Locked = true;
constraint.AffectsPositionX = true;
constraint.AffectsPositionY = true;
constraint.AffectsPositionZ = true;
constraint.AffectsRotationX = true;
constraint.AffectsRotationY = true;
constraint.AffectsRotationZ = true;
constraint.FreezeToWorld = true;
#else
var constraint = obj.AddComponent<ParentConstraint>();
constraint.AddSource(new ConstraintSource()
{
@ -96,6 +110,7 @@ namespace nadena.dev.modular_avatar.core.editor
constraint.locked = true;
constraint.rotationOffsets = new[] {Vector3.zero};
constraint.translationOffsets = new[] {Vector3.zero};
#endif
_proxy = obj.transform;