diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping.cs b/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping.cs deleted file mode 100644 index d32f7472..00000000 --- a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping.cs +++ /dev/null @@ -1,46 +0,0 @@ -using nadena.dev.modular_avatar.core.editor; -using NUnit.Framework; -using VRC.SDK3.Dynamics.PhysBone.Components; - -namespace modular_avatar_tests.DuplicatePBStripping -{ - public class DuplicatePBStripping : TestBase - { - [Test] - public void StripsExtraPBones_withNullRootTransform() - { - var prefab = CreatePrefab("DuplicatePBStripping_nullRef.prefab"); - AvatarProcessor.ProcessAvatar(prefab); - - Assert.AreEqual(1, prefab.GetComponentsInChildren().Length); - } - - [Test] - public void StripsExtraPBones_withExplicitRootTransform() - { - var prefab = CreatePrefab("DuplicatePBStripping_objRef.prefab"); - AvatarProcessor.ProcessAvatar(prefab); - - Assert.AreEqual(1, prefab.GetComponentsInChildren().Length); - } - - [Test] - public void StripsExtraPBones_withSiblingRootTransform() - { - var prefab = CreatePrefab("DuplicatePBStripping_otherRef.prefab"); - AvatarProcessor.ProcessAvatar(prefab); - - Assert.AreEqual(1, prefab.GetComponentsInChildren().Length); - } - - [Test] - public void StripsExtraPBones_notWhenTargetDiffers() - { - var prefab = CreatePrefab("DuplicatePBStripping_preserve.prefab"); - AvatarProcessor.ProcessAvatar(prefab); - - // Note that this prefab has one duplicate, one non-duplicate component - Assert.AreEqual(2, prefab.GetComponentsInChildren().Length); - } - } -} \ No newline at end of file diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping.cs.meta b/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping.cs.meta deleted file mode 100644 index 3dc7af99..00000000 --- a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: f7c215421c4e48e79f30a56b59f2c174 -timeCreated: 1673875944 \ No newline at end of file diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_preserve.prefab b/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_preserve.prefab deleted file mode 100644 index d3f85a9c..00000000 --- a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_preserve.prefab +++ /dev/null @@ -1,1026 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &5307695925281184 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1346911765870406418} - m_Layer: 0 - m_Name: Merged - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1346911765870406418 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5307695925281184} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 2470959523001346680} - m_Father: {fileID: 3288029844994708450} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1185347276494512093 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1924794259696430912} - m_Layer: 0 - m_Name: Armature - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1924794259696430912 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1185347276494512093} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 8466034055491725982} - - {fileID: 4920308331760759596} - - {fileID: 1681599259655281294} - m_Father: {fileID: 3288029844994708450} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2671187349547250459 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4599847896342424235} - m_Layer: 0 - m_Name: Tip - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4599847896342424235 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2671187349547250459} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 8466034055491725982} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &3118168415141652901 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8466034055491725982} - m_Layer: 0 - m_Name: PB - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8466034055491725982 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3118168415141652901} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 4599847896342424235} - m_Father: {fileID: 1924794259696430912} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &3229473751376893384 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4920308331760759596} - - component: {fileID: 1240230512864768401} - m_Layer: 0 - m_Name: ref - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4920308331760759596 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3229473751376893384} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1924794259696430912} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1240230512864768401 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3229473751376893384} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1661641543, guid: 2a2c05204084d904aa4945ccff20d8e5, type: 3} - m_Name: - m_EditorClassIdentifier: - integrationType: 0 - rootTransform: {fileID: 8466034055491725982} - ignoreTransforms: [] - endpointPosition: {x: 0, y: 0, z: 0} - multiChildType: 0 - pull: 0.2 - pullCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - spring: 0.2 - springCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - stiffness: 0.2 - stiffnessCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - gravity: 0 - gravityCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - gravityFalloff: 0 - gravityFalloffCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - immobileType: 0 - immobile: 0 - immobileCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - allowCollision: 1 - radius: 0 - radiusCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colliders: [] - limitType: 0 - maxAngleX: 45 - maxAngleXCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - maxAngleZ: 45 - maxAngleZCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - limitRotation: {x: 0, y: 0, z: 0} - limitRotationXCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - limitRotationYCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - limitRotationZCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - allowGrabbing: 1 - allowPosing: 1 - grabMovement: 0.5 - maxStretch: 0 - maxStretchCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - isAnimated: 0 - parameter: - showGizmos: 1 - boneOpacity: 0.5 - limitOpacity: 0.5 ---- !u!1 &3669416188374771048 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2470959523001346680} - - component: {fileID: 4555694376538259855} - m_Layer: 0 - m_Name: Armature (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2470959523001346680 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3669416188374771048} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 3144974420888563984} - - {fileID: 1058366299372909130} - - {fileID: 3585740765715002245} - m_Father: {fileID: 1346911765870406418} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &4555694376538259855 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3669416188374771048} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2df373bf91cf30b4bbd495e11cb1a2ec, type: 3} - m_Name: - m_EditorClassIdentifier: - mergeTarget: - referencePath: Armature - prefix: - suffix: - locked: 0 ---- !u!1 &4762681010693511042 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3585740765715002245} - m_Layer: 0 - m_Name: Obj2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3585740765715002245 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4762681010693511042} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 2470959523001346680} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &5060562373779566306 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1681599259655281294} - m_Layer: 0 - m_Name: Obj2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1681599259655281294 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5060562373779566306} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1924794259696430912} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &5538066357489875403 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3144974420888563984} - m_Layer: 0 - m_Name: PB - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3144974420888563984 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5538066357489875403} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 9118779566147113326} - m_Father: {fileID: 2470959523001346680} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &7059671866930001398 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9118779566147113326} - m_Layer: 0 - m_Name: Tip - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &9118779566147113326 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7059671866930001398} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 3144974420888563984} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &7546831960978351324 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3288029844994708450} - - component: {fileID: 6689100707227635493} - - component: {fileID: 5168272042297394204} - m_Layer: 0 - m_Name: DuplicatePBStripping_preserve - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3288029844994708450 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7546831960978351324} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.9999927, y: -0.76461804, z: -2.4018843} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1924794259696430912} - - {fileID: 1346911765870406418} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &6689100707227635493 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7546831960978351324} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 542108242, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} - m_Name: - m_EditorClassIdentifier: - Name: - ViewPosition: {x: 0, y: 1.6, z: 0.2} - Animations: 0 - ScaleIPD: 1 - lipSync: 0 - lipSyncJawBone: {fileID: 0} - lipSyncJawClosed: {x: 0, y: 0, z: 0, w: 1} - lipSyncJawOpen: {x: 0, y: 0, z: 0, w: 1} - VisemeSkinnedMesh: {fileID: 0} - MouthOpenBlendShapeName: Facial_Blends.Jaw_Down - VisemeBlendShapes: [] - unityVersion: - portraitCameraPositionOffset: {x: 0, y: 0, z: 0} - portraitCameraRotationOffset: {x: 0, y: 1, z: 0, w: -0.00000004371139} - customExpressions: 0 - expressionsMenu: {fileID: 0} - expressionParameters: {fileID: 0} - enableEyeLook: 0 - customEyeLookSettings: - eyeMovement: - confidence: 0.5 - excitement: 0.5 - leftEye: {fileID: 0} - rightEye: {fileID: 0} - eyesLookingStraight: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - eyesLookingUp: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - eyesLookingDown: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - eyesLookingLeft: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - eyesLookingRight: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - eyelidType: 0 - upperLeftEyelid: {fileID: 0} - upperRightEyelid: {fileID: 0} - lowerLeftEyelid: {fileID: 0} - lowerRightEyelid: {fileID: 0} - eyelidsDefault: - upper: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - lower: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - eyelidsClosed: - upper: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - lower: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - eyelidsLookingUp: - upper: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - lower: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - eyelidsLookingDown: - upper: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - lower: - linked: 1 - left: {x: 0, y: 0, z: 0, w: 0} - right: {x: 0, y: 0, z: 0, w: 0} - eyelidsSkinnedMesh: {fileID: 0} - eyelidsBlendshapes: - customizeAnimationLayers: 0 - baseAnimationLayers: - - isEnabled: 0 - type: 0 - animatorController: {fileID: 0} - mask: {fileID: 0} - isDefault: 1 - - isEnabled: 0 - type: 2 - animatorController: {fileID: 0} - mask: {fileID: 0} - isDefault: 1 - - isEnabled: 0 - type: 3 - animatorController: {fileID: 0} - mask: {fileID: 0} - isDefault: 1 - - isEnabled: 0 - type: 4 - animatorController: {fileID: 0} - mask: {fileID: 0} - isDefault: 1 - - isEnabled: 0 - type: 5 - animatorController: {fileID: 0} - mask: {fileID: 0} - isDefault: 1 - specialAnimationLayers: - - isEnabled: 0 - type: 6 - animatorController: {fileID: 0} - mask: {fileID: 0} - isDefault: 1 - - isEnabled: 0 - type: 7 - animatorController: {fileID: 0} - mask: {fileID: 0} - isDefault: 1 - - isEnabled: 0 - type: 8 - animatorController: {fileID: 0} - mask: {fileID: 0} - isDefault: 1 - AnimationPreset: {fileID: 0} - animationHashSet: [] - autoFootsteps: 1 - autoLocomotion: 1 - collider_head: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_torso: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_footR: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_footL: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_handR: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_handL: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_fingerIndexL: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_fingerMiddleL: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_fingerRingL: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_fingerLittleL: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_fingerIndexR: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_fingerMiddleR: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_fingerRingR: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} - collider_fingerLittleR: - isMirrored: 1 - state: 0 - transform: {fileID: 0} - radius: 0 - height: 0 - position: {x: 0, y: 0, z: 0} - rotation: {x: 0, y: 0, z: 0, w: 1} ---- !u!114 &5168272042297394204 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7546831960978351324} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -1427037861, guid: 4ecd63eff847044b68db9453ce219299, type: 3} - m_Name: - m_EditorClassIdentifier: - launchedFromSDKPipeline: 0 - completedSDKPipeline: 0 - blueprintId: - contentType: 0 - assetBundleUnityVersion: - fallbackStatus: 0 ---- !u!1 &8948347872370946622 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1058366299372909130} - - component: {fileID: 5925503763981397634} - - component: {fileID: 7902691467133715181} - m_Layer: 0 - m_Name: ref - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1058366299372909130 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8948347872370946622} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 2470959523001346680} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5925503763981397634 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8948347872370946622} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1661641543, guid: 2a2c05204084d904aa4945ccff20d8e5, type: 3} - m_Name: - m_EditorClassIdentifier: - integrationType: 0 - rootTransform: {fileID: 3585740765715002245} - ignoreTransforms: [] - endpointPosition: {x: 0, y: 0, z: 0} - multiChildType: 0 - pull: 0.2 - pullCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - spring: 0.2 - springCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - stiffness: 0.2 - stiffnessCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - gravity: 0 - gravityCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - gravityFalloff: 0 - gravityFalloffCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - immobileType: 0 - immobile: 0 - immobileCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - allowCollision: 1 - radius: 0 - radiusCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colliders: [] - limitType: 0 - maxAngleX: 45 - maxAngleXCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - maxAngleZ: 45 - maxAngleZCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - limitRotation: {x: 0, y: 0, z: 0} - limitRotationXCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - limitRotationYCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - limitRotationZCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - allowGrabbing: 1 - allowPosing: 1 - grabMovement: 0.5 - maxStretch: 0 - maxStretchCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - isAnimated: 0 - parameter: - showGizmos: 1 - boneOpacity: 0.5 - limitOpacity: 0.5 ---- !u!114 &7902691467133715181 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8948347872370946622} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1661641543, guid: 2a2c05204084d904aa4945ccff20d8e5, type: 3} - m_Name: - m_EditorClassIdentifier: - integrationType: 0 - rootTransform: {fileID: 3144974420888563984} - ignoreTransforms: [] - endpointPosition: {x: 0, y: 0, z: 0} - multiChildType: 0 - pull: 0.2 - pullCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - spring: 0.2 - springCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - stiffness: 0.2 - stiffnessCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - gravity: 0 - gravityCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - gravityFalloff: 0 - gravityFalloffCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - immobileType: 0 - immobile: 0 - immobileCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - allowCollision: 1 - radius: 0 - radiusCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - colliders: [] - limitType: 0 - maxAngleX: 45 - maxAngleXCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - maxAngleZ: 45 - maxAngleZCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - limitRotation: {x: 0, y: 0, z: 0} - limitRotationXCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - limitRotationYCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - limitRotationZCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - allowGrabbing: 1 - allowPosing: 1 - grabMovement: 0.5 - maxStretch: 0 - maxStretchCurve: - serializedVersion: 2 - m_Curve: [] - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - isAnimated: 0 - parameter: - showGizmos: 1 - boneOpacity: 0.5 - limitOpacity: 0.5 diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_preserve.prefab.meta b/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_preserve.prefab.meta deleted file mode 100644 index e3e9445e..00000000 --- a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_preserve.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: dcc5f7e743ae1324781e00fb516d3bff -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping.meta b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB.meta similarity index 100% rename from Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping.meta rename to Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB.meta diff --git a/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB.cs b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB.cs new file mode 100644 index 00000000..f50844f3 --- /dev/null +++ b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB.cs @@ -0,0 +1,48 @@ +using nadena.dev.modular_avatar.core.editor; +using NUnit.Framework; +using VRC.SDK3.Dynamics.PhysBone.Components; + +namespace modular_avatar_tests.PreserveOutfitPB +{ + public class PreserveOutfitPB : TestBase + { + [Test] + public void NullRootTransform() + { + var avatar = CreatePrefab("PreserveOutfitPB_NullRootTransform.prefab"); + AvatarProcessor.ProcessAvatar(avatar); + + var armature = avatar.transform.Find("Armature"); + Assert.That(armature.childCount, Is.EqualTo(2)); + Assert.That(armature.GetChild(0).GetComponent(), Is.Not.Null); + Assert.That(armature.GetChild(1).GetComponent(), Is.Not.Null); + } + + [Test] + public void SelfRootTransform() + { + var avatar = CreatePrefab("PreserveOutfitPB_SelfRootTransform.prefab"); + AvatarProcessor.ProcessAvatar(avatar); + + var armature = avatar.transform.Find("Armature"); + Assert.That(armature.childCount, Is.EqualTo(2)); + Assert.That(armature.GetChild(0).GetComponent(), Is.Not.Null); + Assert.That(armature.GetChild(1).GetComponent(), Is.Not.Null); + } + + [Test] + public void SiblingRootTransform() + { + var avatar = CreatePrefab("PreserveOutfitPB_SiblingRootTransform.prefab"); + AvatarProcessor.ProcessAvatar(avatar); + + var armature = avatar.transform.Find("Armature"); + Assert.That(armature.childCount, Is.EqualTo(3)); + + var @ref = armature.Find("ref"); + Assert.That(@ref.childCount, Is.EqualTo(1)); + Assert.That(@ref.GetComponent(), Is.Not.Null); + Assert.That(@ref.GetChild(0).GetComponent(), Is.Not.Null); + } + } +} \ No newline at end of file diff --git a/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB.cs.meta b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB.cs.meta new file mode 100644 index 00000000..38b8a85d --- /dev/null +++ b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f7c215421c4e48e79f30a56b59f2c174 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_nullRef.prefab b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_NullRootTransform.prefab similarity index 99% rename from Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_nullRef.prefab rename to Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_NullRootTransform.prefab index 135e7b48..4fbb8afa 100644 --- a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_nullRef.prefab +++ b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_NullRootTransform.prefab @@ -42,7 +42,7 @@ GameObject: - component: {fileID: 4446924385526016477} - component: {fileID: 2800033387965506276} m_Layer: 0 - m_Name: DuplicatePBStripping_nullRef + m_Name: PreserveOutfitPB_NullRootTransform m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_nullRef.prefab.meta b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_NullRootTransform.prefab.meta similarity index 100% rename from Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_nullRef.prefab.meta rename to Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_NullRootTransform.prefab.meta diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_objRef.prefab b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_SelfRootTransform.prefab similarity index 99% rename from Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_objRef.prefab rename to Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_SelfRootTransform.prefab index 04cd7393..37b80734 100644 --- a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_objRef.prefab +++ b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_SelfRootTransform.prefab @@ -192,7 +192,7 @@ GameObject: - component: {fileID: 1963453281188716255} - component: {fileID: 23230439543150054} m_Layer: 0 - m_Name: DuplicatePBStripping_objRef + m_Name: PreserveOutfitPB_SelfRootTransform m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_objRef.prefab.meta b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_SelfRootTransform.prefab.meta similarity index 100% rename from Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_objRef.prefab.meta rename to Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_SelfRootTransform.prefab.meta diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_otherRef.prefab b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_SiblingRootTransform.prefab similarity index 99% rename from Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_otherRef.prefab rename to Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_SiblingRootTransform.prefab index 26edf472..5c807cb1 100644 --- a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_otherRef.prefab +++ b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_SiblingRootTransform.prefab @@ -73,7 +73,7 @@ GameObject: - component: {fileID: 1967208902774019681} - component: {fileID: 9569865848511832} m_Layer: 0 - m_Name: DuplicatePBStripping_otherRef + m_Name: PreserveOutfitPB_SiblingRootTransform m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_otherRef.prefab.meta b/Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_SiblingRootTransform.prefab.meta similarity index 100% rename from Assets/_ModularAvatar/EditModeTests/DuplicatePBStripping/DuplicatePBStripping_otherRef.prefab.meta rename to Assets/_ModularAvatar/EditModeTests/PreserveOutfitPB/PreserveOutfitPB_SiblingRootTransform.prefab.meta