diff --git a/Editor/Constraints/SetupAvatarConstraints.cs b/Editor/Constraints/SetupAvatarConstraints.cs index d64f37a..9a7e95d 100644 --- a/Editor/Constraints/SetupAvatarConstraints.cs +++ b/Editor/Constraints/SetupAvatarConstraints.cs @@ -393,7 +393,8 @@ private void AttachToAvatar(VRCAvatarDescriptor avatar, MyyAssetsManager runAsse if (!toAttach.IsPrepared()) continue; toAttach.AttachHierarchy(avatarCopy.gameObject); - toAttach.FixConstraintSources(avatar.gameObject, avatarCopy.gameObject); + ConstraintsHelpers.FixExternalConstraintSources(avatar.gameObject, avatarCopy.gameObject, toAttach.copy); + //toAttach.FixConstraintSources(avatar.gameObject, avatarCopy.gameObject); toAttach.SetupStations(stationsProxies); string variableName = toAttach.animVariableName; diff --git a/Editor/Constraints/SetupObjectConstraints.cs b/Editor/Constraints/SetupObjectConstraints.cs index 3be2944..eb98bee 100644 --- a/Editor/Constraints/SetupObjectConstraints.cs +++ b/Editor/Constraints/SetupObjectConstraints.cs @@ -5,6 +5,7 @@ using UnityEditor.Animations; using UnityEngine; using UnityEngine.Animations; +using VRC.Dynamics; using VRC.SDK3.Avatars.Components; namespace Myy @@ -54,6 +55,7 @@ public SetupObjectConstraints(GameObject go, string variableName, ConstraintsGlo : base(go, variableName) { this.options = options; + additionalHierarchy = new GameObject(); additionalHierarchy.name = worldLockSuffix + "-" + animVariableName; clips = new AnimationClip[(int)ClipIndex.COUNT]; machines = new AnimatorStateMachine[] @@ -267,13 +269,22 @@ public void AttachHierarchy(GameObject avatar) if (options.disableConstraintsOnLock) { + var worldLockClip = clips[(int)ClipIndex.WorldLocked]; + var notWorldLockClip = clips[(int)ClipIndex.NotWorldLocked]; foreach (var constraint in go.GetComponentsInChildren()) { - clips[(int)ClipIndex.WorldLocked].SetCurve( + worldLockClip.SetCurve( lockedObjectPath, constraint.GetType(), "m_Enabled", ConstantCurve(false)); - clips[(int)ClipIndex.NotWorldLocked].SetCurve( + notWorldLockClip.SetCurve( lockedObjectPath, constraint.GetType(), "m_Enabled", ConstantCurve(true)); } + foreach (var vrcConstraint in go.GetComponentsInChildren()) + { + worldLockClip.SetCurve( + lockedObjectPath, vrcConstraint.GetType(), "m_Enabled", ConstantCurve(false)); + notWorldLockClip.SetCurve( + lockedObjectPath, vrcConstraint.GetType(), "m_Enabled", ConstantCurve(true)); + } } } diff --git a/Editor/TranslationStrings.cs b/Editor/TranslationStrings.cs index 7371ede..09b7324 100644 --- a/Editor/TranslationStrings.cs +++ b/Editor/TranslationStrings.cs @@ -160,7 +160,7 @@ public static void SetLang(HumanReadableLang language) [StringID.Label_ResetPositionOnLock] = "Reset object position when unlocked", [StringID.Label_DefaultToggledOn] = "Show the object by default", [StringID.VRCMenu_WorldLock] = "Lock in place", - [StringID.VRCMenu_ToggleOn] = "ON" + [StringID.VRCMenu_ToggleOn] = "Show" }; public static Dictionary messagesJP = new Dictionary @@ -200,7 +200,7 @@ public static void SetLang(HumanReadableLang language) [StringID.Label_ResetPositionOnLock] = "固定解除の時、原の位置に戻す", [StringID.Label_DefaultToggledOn] = "通常にアイテムを表示する", [StringID.VRCMenu_WorldLock] = "固定", - [StringID.VRCMenu_ToggleOn] = "ON" + [StringID.VRCMenu_ToggleOn] = "出す" }; public static Dictionary currentTranslation = messagesJP; diff --git a/package.json b/package.json index 16a52e3..2b78efb 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,18 @@ { - "name" : "io.github.vr-voyage.tools.world-lock-autosetup", - "displayName" : "Voyage's World Lock Autosetup", - "version" : "1.5.0", - "unity" : "2019.4", - "description" : "Tools to automatically equip world locked items on avatars. https://github.com/vr-voyage/vrchat-worldlock-autosetup", - "author" : { - "name" : "Voyage Voyage", - "url" : "https://voyage-vrsns.booth.pm/items/3170932" - }, - "vpmDependencies" : { - "com.vrchat.avatars" : "3.7.x" - }, - "url" : "https://github.com/vr-voyage/vrchat-worldlock-autosetup", - "legacyFolders" : { - "Assets\\Voyage\\ObjectsFixer" : "" - } -} + "name": "io.github.vr-voyage.tools.world-lock-autosetup", + "displayName": "Voyage's World Lock Autosetup", + "version": "1.4.999", + "unity": "2019.4", + "description": "Tools to automatically equip world locked items on avatars. https://github.com/vr-voyage/vrchat-worldlock-autosetup", + "author": { + "name": "Voyage Voyage", + "url": "https://voyage-vrsns.booth.pm/items/3170932" + }, + "vpmDependencies": { + "com.vrchat.avatars": "3.7.x" + }, + "url": "https://github.com/vr-voyage/vrchat-worldlock-autosetup", + "legacyFolders": { + "Assets\\Voyage\\ObjectsFixer": "" + } +} \ No newline at end of file