From 4d8569292d603c8ac15885380242e630904722ab Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 18 Dec 2023 12:03:34 +0900 Subject: [PATCH 01/12] Shifter: Replace self.__class__ in all components to avoid recursion error fixes #362 --- .../mgear/shifter_classic_components/arm_2jnt_01/guide.py | 2 +- .../mgear/shifter_classic_components/arm_2jnt_02/guide.py | 2 +- .../mgear/shifter_classic_components/arm_2jnt_03/guide.py | 2 +- .../mgear/shifter_classic_components/arm_2jnt_04/guide.py | 2 +- .../arm_2jnt_freeTangents_01/guide.py | 2 +- .../mgear/shifter_classic_components/arm_ms_2jnt_01/guide.py | 2 +- .../scripts/mgear/shifter_classic_components/cable_01/guide.py | 2 +- .../scripts/mgear/shifter_classic_components/chain_01/guide.py | 2 +- .../shifter_classic_components/chain_FK_spline_01/guide.py | 2 +- .../shifter_classic_components/chain_FK_spline_02/guide.py | 2 +- .../chain_FK_spline_variable_IK_01/guide.py | 2 +- .../chain_IK_spline_variable_FK_01/guide.py | 2 +- .../chain_IK_spline_variable_FK_stack_01/guide.py | 2 +- .../mgear/shifter_classic_components/chain_loc_ori_01/guide.py | 2 +- .../mgear/shifter_classic_components/chain_net_01/guide.py | 2 +- .../mgear/shifter_classic_components/chain_spring_01/guide.py | 2 +- .../chain_spring_lite_stack_master_01/guide.py | 2 +- .../mgear/shifter_classic_components/chain_stack_01/guide.py | 2 +- .../shifter_classic_components/chain_variable_IK_01/guide.py | 2 +- .../mgear/shifter_classic_components/chain_whip_01/guide.py | 2 +- .../mgear/shifter_classic_components/control_01/guide.py | 2 +- .../scripts/mgear/shifter_classic_components/eye_01/guide.py | 2 +- .../mgear/shifter_classic_components/foot_bk_01/guide.py | 2 +- .../mgear/shifter_classic_components/hydraulic_01/guide.py | 2 +- .../mgear/shifter_classic_components/leg_2jnt_01/guide.py | 2 +- .../mgear/shifter_classic_components/leg_2jnt_02/guide.py | 2 +- .../leg_2jnt_freeTangents_01/guide.py | 2 +- .../mgear/shifter_classic_components/leg_3jnt_01/guide.py | 2 +- .../mgear/shifter_classic_components/leg_ms_2jnt_01/guide.py | 2 +- .../mgear/shifter_classic_components/lite_chain_01/guide.py | 2 +- .../shifter_classic_components/lite_chain_stack_01/guide.py | 2 +- .../shifter_classic_components/lite_chain_stack_02/guide.py | 2 +- .../scripts/mgear/shifter_classic_components/meta_01/guide.py | 2 +- .../scripts/mgear/shifter_classic_components/mouth_01/guide.py | 2 +- .../scripts/mgear/shifter_classic_components/mouth_02/guide.py | 2 +- .../mgear/shifter_classic_components/neck_ik_01/guide.py | 2 +- .../mgear/shifter_classic_components/sdk_control_01/guide.py | 2 +- .../mgear/shifter_classic_components/shoulder_01/guide.py | 2 +- .../mgear/shifter_classic_components/shoulder_02/guide.py | 2 +- .../mgear/shifter_classic_components/shoulder_ms_01/guide.py | 2 +- .../mgear/shifter_classic_components/spine_FK_01/guide.py | 2 +- .../mgear/shifter_classic_components/spine_S_shape_01/guide.py | 2 +- .../mgear/shifter_classic_components/spine_ik_01/guide.py | 2 +- .../mgear/shifter_classic_components/spine_ik_02/guide.py | 2 +- .../mgear/shifter_classic_components/squash4Sides_01/guide.py | 2 +- .../scripts/mgear/shifter_classic_components/squash_01/guide.py | 2 +- .../mgear/shifter_classic_components/tangent_spline_01/guide.py | 2 +- .../mgear/shifter_classic_components/ui_container_01/guide.py | 2 +- .../mgear/shifter_classic_components/ui_slider_01/guide.py | 2 +- .../scripts/mgear/shifter_epic_components/EPIC_arm_01/guide.py | 2 +- .../scripts/mgear/shifter_epic_components/EPIC_arm_02/guide.py | 2 +- .../mgear/shifter_epic_components/EPIC_chain_01/guide.py | 2 +- .../mgear/shifter_epic_components/EPIC_chain_IK_FK_01/guide.py | 2 +- .../mgear/shifter_epic_components/EPIC_control_01/guide.py | 2 +- .../scripts/mgear/shifter_epic_components/EPIC_foot_01/guide.py | 2 +- .../mgear/shifter_epic_components/EPIC_hydraulic_01/guide.py | 2 +- .../shifter_epic_components/EPIC_layered_control_01/guide.py | 2 +- .../scripts/mgear/shifter_epic_components/EPIC_leg_01/guide.py | 2 +- .../scripts/mgear/shifter_epic_components/EPIC_leg_02/guide.py | 2 +- .../mgear/shifter_epic_components/EPIC_leg_3jnt_01/guide.py | 2 +- .../shifter_epic_components/EPIC_mannequin_arm_01/guide.py | 2 +- .../shifter_epic_components/EPIC_mannequin_leg_01/guide.py | 2 +- .../scripts/mgear/shifter_epic_components/EPIC_meta_01/guide.py | 2 +- .../scripts/mgear/shifter_epic_components/EPIC_neck_01/guide.py | 2 +- .../scripts/mgear/shifter_epic_components/EPIC_neck_02/guide.py | 2 +- .../mgear/shifter_epic_components/EPIC_shoulder_01/guide.py | 2 +- .../mgear/shifter_epic_components/EPIC_spine_01/guide.py | 2 +- .../mgear/shifter_epic_components/EPIC_spine_02/guide.py | 2 +- .../shifter_epic_components/EPIC_spine_cartoon_01/guide.py | 2 +- 69 files changed, 69 insertions(+), 69 deletions(-) diff --git a/release/scripts/mgear/shifter_classic_components/arm_2jnt_01/guide.py b/release/scripts/mgear/shifter_classic_components/arm_2jnt_01/guide.py index a5e85406..32d53360 100644 --- a/release/scripts/mgear/shifter_classic_components/arm_2jnt_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/arm_2jnt_01/guide.py @@ -127,7 +127,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/arm_2jnt_02/guide.py b/release/scripts/mgear/shifter_classic_components/arm_2jnt_02/guide.py index 8428ad31..f6236176 100644 --- a/release/scripts/mgear/shifter_classic_components/arm_2jnt_02/guide.py +++ b/release/scripts/mgear/shifter_classic_components/arm_2jnt_02/guide.py @@ -128,7 +128,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/arm_2jnt_03/guide.py b/release/scripts/mgear/shifter_classic_components/arm_2jnt_03/guide.py index 1c0fddee..c5bf380b 100644 --- a/release/scripts/mgear/shifter_classic_components/arm_2jnt_03/guide.py +++ b/release/scripts/mgear/shifter_classic_components/arm_2jnt_03/guide.py @@ -130,7 +130,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/arm_2jnt_04/guide.py b/release/scripts/mgear/shifter_classic_components/arm_2jnt_04/guide.py index a59db329..33532421 100644 --- a/release/scripts/mgear/shifter_classic_components/arm_2jnt_04/guide.py +++ b/release/scripts/mgear/shifter_classic_components/arm_2jnt_04/guide.py @@ -142,7 +142,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/arm_2jnt_freeTangents_01/guide.py b/release/scripts/mgear/shifter_classic_components/arm_2jnt_freeTangents_01/guide.py index e24914c4..97b0ac69 100644 --- a/release/scripts/mgear/shifter_classic_components/arm_2jnt_freeTangents_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/arm_2jnt_freeTangents_01/guide.py @@ -118,7 +118,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/arm_ms_2jnt_01/guide.py b/release/scripts/mgear/shifter_classic_components/arm_ms_2jnt_01/guide.py index 0f032a19..19424066 100644 --- a/release/scripts/mgear/shifter_classic_components/arm_ms_2jnt_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/arm_ms_2jnt_01/guide.py @@ -110,7 +110,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/cable_01/guide.py b/release/scripts/mgear/shifter_classic_components/cable_01/guide.py index 1e25b6b2..7a94c325 100644 --- a/release/scripts/mgear/shifter_classic_components/cable_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/cable_01/guide.py @@ -107,7 +107,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_01/guide.py index 22605d42..7a0b3171 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_01/guide.py @@ -91,7 +91,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_FK_spline_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_FK_spline_01/guide.py index 38f073ef..7ce9d2ad 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_FK_spline_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_FK_spline_01/guide.py @@ -90,7 +90,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_FK_spline_02/guide.py b/release/scripts/mgear/shifter_classic_components/chain_FK_spline_02/guide.py index a6af0984..545ef556 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_FK_spline_02/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_FK_spline_02/guide.py @@ -92,7 +92,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_FK_spline_variable_IK_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_FK_spline_variable_IK_01/guide.py index 51b9efe1..d5e289ef 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_FK_spline_variable_IK_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_FK_spline_variable_IK_01/guide.py @@ -90,7 +90,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_IK_spline_variable_FK_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_IK_spline_variable_FK_01/guide.py index 39074dec..98b5a101 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_IK_spline_variable_FK_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_IK_spline_variable_FK_01/guide.py @@ -95,7 +95,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_IK_spline_variable_FK_stack_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_IK_spline_variable_FK_stack_01/guide.py index dd237ad3..86fbc411 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_IK_spline_variable_FK_stack_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_IK_spline_variable_FK_stack_01/guide.py @@ -101,7 +101,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_loc_ori_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_loc_ori_01/guide.py index 36a46568..e2049b45 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_loc_ori_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_loc_ori_01/guide.py @@ -97,7 +97,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_net_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_net_01/guide.py index f990579e..f7098dad 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_net_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_net_01/guide.py @@ -96,7 +96,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_spring_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_spring_01/guide.py index 06ca607d..dc79776f 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_spring_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_spring_01/guide.py @@ -71,7 +71,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.setup_componentSettingWindow() self.create_componentControls() diff --git a/release/scripts/mgear/shifter_classic_components/chain_spring_lite_stack_master_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_spring_lite_stack_master_01/guide.py index 891fac91..8265d800 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_spring_lite_stack_master_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_spring_lite_stack_master_01/guide.py @@ -71,7 +71,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.setup_componentSettingWindow() self.create_componentControls() diff --git a/release/scripts/mgear/shifter_classic_components/chain_stack_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_stack_01/guide.py index c94950af..ed7518a3 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_stack_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_stack_01/guide.py @@ -100,7 +100,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_variable_IK_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_variable_IK_01/guide.py index 5aca0703..997da1b7 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_variable_IK_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_variable_IK_01/guide.py @@ -87,7 +87,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/chain_whip_01/guide.py b/release/scripts/mgear/shifter_classic_components/chain_whip_01/guide.py index 5f4a9d7e..0311acff 100644 --- a/release/scripts/mgear/shifter_classic_components/chain_whip_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/chain_whip_01/guide.py @@ -89,7 +89,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/control_01/guide.py b/release/scripts/mgear/shifter_classic_components/control_01/guide.py index 74123b7a..f8b36778 100644 --- a/release/scripts/mgear/shifter_classic_components/control_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/control_01/guide.py @@ -137,7 +137,7 @@ def __init__(self, parent=None): 'sphere', 'square'] - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/eye_01/guide.py b/release/scripts/mgear/shifter_classic_components/eye_01/guide.py index e2e18124..dad25996 100644 --- a/release/scripts/mgear/shifter_classic_components/eye_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/eye_01/guide.py @@ -85,7 +85,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/foot_bk_01/guide.py b/release/scripts/mgear/shifter_classic_components/foot_bk_01/guide.py index e92473cf..2d0dee2d 100644 --- a/release/scripts/mgear/shifter_classic_components/foot_bk_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/foot_bk_01/guide.py @@ -100,7 +100,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/hydraulic_01/guide.py b/release/scripts/mgear/shifter_classic_components/hydraulic_01/guide.py index f34bfc3b..b34b08b5 100644 --- a/release/scripts/mgear/shifter_classic_components/hydraulic_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/hydraulic_01/guide.py @@ -84,7 +84,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/leg_2jnt_01/guide.py b/release/scripts/mgear/shifter_classic_components/leg_2jnt_01/guide.py index afb2a951..425c3ac7 100644 --- a/release/scripts/mgear/shifter_classic_components/leg_2jnt_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/leg_2jnt_01/guide.py @@ -119,7 +119,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/leg_2jnt_02/guide.py b/release/scripts/mgear/shifter_classic_components/leg_2jnt_02/guide.py index 1456eb6f..908744cb 100644 --- a/release/scripts/mgear/shifter_classic_components/leg_2jnt_02/guide.py +++ b/release/scripts/mgear/shifter_classic_components/leg_2jnt_02/guide.py @@ -128,7 +128,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/leg_2jnt_freeTangents_01/guide.py b/release/scripts/mgear/shifter_classic_components/leg_2jnt_freeTangents_01/guide.py index 78bdfc70..168d9ea5 100644 --- a/release/scripts/mgear/shifter_classic_components/leg_2jnt_freeTangents_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/leg_2jnt_freeTangents_01/guide.py @@ -117,7 +117,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/leg_3jnt_01/guide.py b/release/scripts/mgear/shifter_classic_components/leg_3jnt_01/guide.py index 47e96dc6..6f7886c8 100644 --- a/release/scripts/mgear/shifter_classic_components/leg_3jnt_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/leg_3jnt_01/guide.py @@ -129,7 +129,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/leg_ms_2jnt_01/guide.py b/release/scripts/mgear/shifter_classic_components/leg_ms_2jnt_01/guide.py index 8965b117..4ffed2de 100644 --- a/release/scripts/mgear/shifter_classic_components/leg_ms_2jnt_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/leg_ms_2jnt_01/guide.py @@ -110,7 +110,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/lite_chain_01/guide.py b/release/scripts/mgear/shifter_classic_components/lite_chain_01/guide.py index 1dfe568f..eed5c0d5 100644 --- a/release/scripts/mgear/shifter_classic_components/lite_chain_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/lite_chain_01/guide.py @@ -85,7 +85,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/lite_chain_stack_01/guide.py b/release/scripts/mgear/shifter_classic_components/lite_chain_stack_01/guide.py index 940c8325..c1100e92 100644 --- a/release/scripts/mgear/shifter_classic_components/lite_chain_stack_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/lite_chain_stack_01/guide.py @@ -91,7 +91,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/lite_chain_stack_02/guide.py b/release/scripts/mgear/shifter_classic_components/lite_chain_stack_02/guide.py index 0448a110..b4956c44 100644 --- a/release/scripts/mgear/shifter_classic_components/lite_chain_stack_02/guide.py +++ b/release/scripts/mgear/shifter_classic_components/lite_chain_stack_02/guide.py @@ -94,7 +94,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/meta_01/guide.py b/release/scripts/mgear/shifter_classic_components/meta_01/guide.py index 68887e81..1df87b27 100644 --- a/release/scripts/mgear/shifter_classic_components/meta_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/meta_01/guide.py @@ -86,7 +86,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/mouth_01/guide.py b/release/scripts/mgear/shifter_classic_components/mouth_01/guide.py index 8599cb99..48bf7460 100644 --- a/release/scripts/mgear/shifter_classic_components/mouth_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/mouth_01/guide.py @@ -86,7 +86,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.setup_componentSettingWindow() self.create_componentControls() diff --git a/release/scripts/mgear/shifter_classic_components/mouth_02/guide.py b/release/scripts/mgear/shifter_classic_components/mouth_02/guide.py index aea9419b..90f262b6 100644 --- a/release/scripts/mgear/shifter_classic_components/mouth_02/guide.py +++ b/release/scripts/mgear/shifter_classic_components/mouth_02/guide.py @@ -86,7 +86,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.setup_componentSettingWindow() self.create_componentControls() diff --git a/release/scripts/mgear/shifter_classic_components/neck_ik_01/guide.py b/release/scripts/mgear/shifter_classic_components/neck_ik_01/guide.py index 00f1c984..134e72a6 100644 --- a/release/scripts/mgear/shifter_classic_components/neck_ik_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/neck_ik_01/guide.py @@ -132,7 +132,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/sdk_control_01/guide.py b/release/scripts/mgear/shifter_classic_components/sdk_control_01/guide.py index 22dcdee5..8d59a3db 100644 --- a/release/scripts/mgear/shifter_classic_components/sdk_control_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/sdk_control_01/guide.py @@ -138,7 +138,7 @@ def __init__(self, parent=None): 'sphere', 'square'] - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/shoulder_01/guide.py b/release/scripts/mgear/shifter_classic_components/shoulder_01/guide.py index 4cb9d424..8e6c674a 100644 --- a/release/scripts/mgear/shifter_classic_components/shoulder_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/shoulder_01/guide.py @@ -84,7 +84,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/shoulder_02/guide.py b/release/scripts/mgear/shifter_classic_components/shoulder_02/guide.py index 81243df6..03a80c2a 100644 --- a/release/scripts/mgear/shifter_classic_components/shoulder_02/guide.py +++ b/release/scripts/mgear/shifter_classic_components/shoulder_02/guide.py @@ -88,7 +88,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/shoulder_ms_01/guide.py b/release/scripts/mgear/shifter_classic_components/shoulder_ms_01/guide.py index 393f137f..a4213239 100644 --- a/release/scripts/mgear/shifter_classic_components/shoulder_ms_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/shoulder_ms_01/guide.py @@ -70,7 +70,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.setup_componentSettingWindow() self.create_componentControls() diff --git a/release/scripts/mgear/shifter_classic_components/spine_FK_01/guide.py b/release/scripts/mgear/shifter_classic_components/spine_FK_01/guide.py index b146ab77..718a5ec0 100644 --- a/release/scripts/mgear/shifter_classic_components/spine_FK_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/spine_FK_01/guide.py @@ -105,7 +105,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/spine_S_shape_01/guide.py b/release/scripts/mgear/shifter_classic_components/spine_S_shape_01/guide.py index a19edddb..5ce0eaed 100644 --- a/release/scripts/mgear/shifter_classic_components/spine_S_shape_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/spine_S_shape_01/guide.py @@ -130,7 +130,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/spine_ik_01/guide.py b/release/scripts/mgear/shifter_classic_components/spine_ik_01/guide.py index 390c5504..58cfe47c 100644 --- a/release/scripts/mgear/shifter_classic_components/spine_ik_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/spine_ik_01/guide.py @@ -115,7 +115,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/spine_ik_02/guide.py b/release/scripts/mgear/shifter_classic_components/spine_ik_02/guide.py index 4dd2db9c..528dfc3f 100644 --- a/release/scripts/mgear/shifter_classic_components/spine_ik_02/guide.py +++ b/release/scripts/mgear/shifter_classic_components/spine_ik_02/guide.py @@ -112,7 +112,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/squash4Sides_01/guide.py b/release/scripts/mgear/shifter_classic_components/squash4Sides_01/guide.py index e342c1fb..78d7561b 100644 --- a/release/scripts/mgear/shifter_classic_components/squash4Sides_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/squash4Sides_01/guide.py @@ -98,7 +98,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/squash_01/guide.py b/release/scripts/mgear/shifter_classic_components/squash_01/guide.py index b4b912c5..982ebdba 100644 --- a/release/scripts/mgear/shifter_classic_components/squash_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/squash_01/guide.py @@ -92,7 +92,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/tangent_spline_01/guide.py b/release/scripts/mgear/shifter_classic_components/tangent_spline_01/guide.py index 03ba26cf..6fd7440c 100644 --- a/release/scripts/mgear/shifter_classic_components/tangent_spline_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/tangent_spline_01/guide.py @@ -112,7 +112,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/ui_container_01/guide.py b/release/scripts/mgear/shifter_classic_components/ui_container_01/guide.py index 043c268e..bc571f48 100644 --- a/release/scripts/mgear/shifter_classic_components/ui_container_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/ui_container_01/guide.py @@ -96,7 +96,7 @@ def __init__(self, parent=None): # Delete old instances of the component settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_classic_components/ui_slider_01/guide.py b/release/scripts/mgear/shifter_classic_components/ui_slider_01/guide.py index cf890490..2b48bb89 100644 --- a/release/scripts/mgear/shifter_classic_components/ui_slider_01/guide.py +++ b/release/scripts/mgear/shifter_classic_components/ui_slider_01/guide.py @@ -175,7 +175,7 @@ def __init__(self, parent=None): # Delete old instances of the component settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_arm_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_arm_01/guide.py index 855b65fa..f9056cb8 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_arm_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_arm_01/guide.py @@ -141,7 +141,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_arm_02/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_arm_02/guide.py index 61172a20..8a605dc1 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_arm_02/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_arm_02/guide.py @@ -157,7 +157,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_chain_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_chain_01/guide.py index 897e8f55..92fa91e2 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_chain_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_chain_01/guide.py @@ -87,7 +87,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_chain_IK_FK_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_chain_IK_FK_01/guide.py index 76627213..d631307b 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_chain_IK_FK_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_chain_IK_FK_01/guide.py @@ -95,7 +95,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_control_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_control_01/guide.py index e6075e42..47cdde82 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_control_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_control_01/guide.py @@ -130,7 +130,7 @@ def __init__(self, parent=None): 'sphere', 'square'] - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_foot_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_foot_01/guide.py index 7fdba3a5..61f67752 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_foot_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_foot_01/guide.py @@ -106,7 +106,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_hydraulic_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_hydraulic_01/guide.py index ae550109..7d491fbb 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_hydraulic_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_hydraulic_01/guide.py @@ -86,7 +86,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_layered_control_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_layered_control_01/guide.py index 47e56eb8..cdafdb15 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_layered_control_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_layered_control_01/guide.py @@ -170,7 +170,7 @@ def __init__(self, parent=None): "square", ] - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_leg_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_leg_01/guide.py index c46d3ce5..a3e0d943 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_leg_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_leg_01/guide.py @@ -125,7 +125,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_leg_02/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_leg_02/guide.py index 2db8fdc4..3f512112 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_leg_02/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_leg_02/guide.py @@ -144,7 +144,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_leg_3jnt_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_leg_3jnt_01/guide.py index 15e47920..48bfbbd1 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_leg_3jnt_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_leg_3jnt_01/guide.py @@ -141,7 +141,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_mannequin_arm_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_mannequin_arm_01/guide.py index 813c028f..5b8003af 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_mannequin_arm_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_mannequin_arm_01/guide.py @@ -139,7 +139,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_mannequin_leg_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_mannequin_leg_01/guide.py index 81f351ca..b2bb51e7 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_mannequin_leg_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_mannequin_leg_01/guide.py @@ -122,7 +122,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_meta_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_meta_01/guide.py index ee9c093a..d288ae14 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_meta_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_meta_01/guide.py @@ -84,7 +84,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_neck_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_neck_01/guide.py index add1c0a1..4c2d4bc3 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_neck_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_neck_01/guide.py @@ -142,7 +142,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_neck_02/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_neck_02/guide.py index 564e1eb5..ef329ede 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_neck_02/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_neck_02/guide.py @@ -142,7 +142,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_shoulder_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_shoulder_01/guide.py index 1e9a9992..b89b50ae 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_shoulder_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_shoulder_01/guide.py @@ -88,7 +88,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_spine_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_spine_01/guide.py index 67fe2bf7..bb886aee 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_spine_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_spine_01/guide.py @@ -162,7 +162,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_spine_02/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_spine_02/guide.py index 98024580..a4568ba7 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_spine_02/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_spine_02/guide.py @@ -163,7 +163,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() diff --git a/release/scripts/mgear/shifter_epic_components/EPIC_spine_cartoon_01/guide.py b/release/scripts/mgear/shifter_epic_components/EPIC_spine_cartoon_01/guide.py index f636216e..52ae374e 100644 --- a/release/scripts/mgear/shifter_epic_components/EPIC_spine_cartoon_01/guide.py +++ b/release/scripts/mgear/shifter_epic_components/EPIC_spine_cartoon_01/guide.py @@ -136,7 +136,7 @@ def __init__(self, parent=None): # Delete old instances of the componet settings window. pyqt.deleteInstances(self, MayaQDockWidget) - super(self.__class__, self).__init__(parent=parent) + super(componentSettings, self).__init__(parent=parent) self.settingsTab = settingsTab() self.setup_componentSettingWindow() From 5fc4d523eb6c40f083c43d022179f4c563ada0b5 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 18 Dec 2023 12:28:05 +0900 Subject: [PATCH 02/12] Avoid resetting rotation order without metadata #328 --- release/scripts/mgear/core/attribute.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/mgear/core/attribute.py b/release/scripts/mgear/core/attribute.py index 494fbc63..02b596f2 100644 --- a/release/scripts/mgear/core/attribute.py +++ b/release/scripts/mgear/core/attribute.py @@ -1119,11 +1119,11 @@ def set_default_value(node, attribute): pm.setAttr("{}.rotateOrder".format(node), intNum) else: pm.displayWarning( - "No custom rotate order metadata found in {}. Resetting to XYZ rotate order".format( + "No custom rotate order metadata found in {}. XYZ rotate order NOT reset".format( node ) ) - node.attr(attribute).set(defVal) + # node.attr(attribute).set(defVal) else: node.attr(attribute).set(defVal) except RuntimeError: From 55c8e73fe44aaec937afa51601d9be42ba3e3e7f Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 18 Dec 2023 12:28:31 +0900 Subject: [PATCH 03/12] update version number to 4.2.0 and update release log --- release/scripts/mgear/__init__.py | 2 +- releaseLog.rst | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/release/scripts/mgear/__init__.py b/release/scripts/mgear/__init__.py index 296dea25..48b0a9d5 100644 --- a/release/scripts/mgear/__init__.py +++ b/release/scripts/mgear/__init__.py @@ -25,7 +25,7 @@ sev_comment = 32 # gear version -VERSION = [4, 1, 4] +VERSION = [4, 2, 0] self = sys.modules[__name__] self.menu_id = None diff --git a/releaseLog.rst b/releaseLog.rst index 4f6eccf1..7310b86c 100644 --- a/releaseLog.rst +++ b/releaseLog.rst @@ -1,6 +1,30 @@ Release Log =========== +4.2.0 +------ +**New Features** + * ueGear: 0.5 Beta + * Shifter Game Tools: FBX exporter #117 + * Shifter: FBX exporter Intergration with Unreal #309 + * RBF Manager 2.0: Miscellaneous Improvements #324 + * Shifter: Rig Builder #115 + * Mocap Tool: HumanIK mapper tool #348 + +**Enhancements** + * Animbits: Spring Manager misc bugs and updates #317 #349 + * Shifter: Add load from selection option in the template explorer #313 + * Core: Curve module update #319 + * chain_FK_spline_02 and control_01: add support for leaf joints #332 + * Shifter: Squash_01 add scale multipliers #33 + * Shifter: Add Match guide to joint hierarchy command #350 + +**Bug Fix** + * Shifter: Not context menu with ghost controls #251 + * Shifter Component bug fix: chain_IK_spline_variable_FK_stack_01 #326 # 325 + * Made a metadata for rotateOrder #343 #328 + * Shifter: Replace self.__class__ in all components to avoid recursion error #362 + 4.1.2 ------ From b9fb5ffa6496104a5e23b773dd2dd0b4d95fbae2 Mon Sep 17 00:00:00 2001 From: Simon Anderson Date: Mon, 18 Dec 2023 17:22:49 +1300 Subject: [PATCH 04/12] Updated Shifter Docs --- docs/source/generated/mgear.rst | 12 ++++++-- .../fbx_exporter/fbx_shifter_export_geo.png | Bin 40255 -> 34913 bytes .../fbx_shifter_export_geo_partitions.png | Bin 38707 -> 42786 bytes docs/source/shifterUserDocumentation.rst | 27 +++++++++--------- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/docs/source/generated/mgear.rst b/docs/source/generated/mgear.rst index bb043be5..3b41cc32 100644 --- a/docs/source/generated/mgear.rst +++ b/docs/source/generated/mgear.rst @@ -1,10 +1,14 @@ -mgear +mgear ===== .. automodule:: mgear + + + + .. rubric:: Functions .. autosummary:: @@ -17,6 +21,7 @@ mgear reloadModule setDebug toggleDebug + toggleLog @@ -32,4 +37,7 @@ mgear FakeException - \ No newline at end of file + + + + diff --git a/docs/source/images/shifter/fbx_exporter/fbx_shifter_export_geo.png b/docs/source/images/shifter/fbx_exporter/fbx_shifter_export_geo.png index c69c6c5fcbe2d26d3acc0ee650d0cee6b1b1da74..9ae81a3e328bb221781bdf7292101229a2000e74 100644 GIT binary patch literal 34913 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 literal 40255 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 literal 38707 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 aMN61^ew55xdLIe=qbR2$TPAH5{J#L_sqh~F diff --git a/docs/source/shifterUserDocumentation.rst b/docs/source/shifterUserDocumentation.rst index 09e3bbc0..55e52ae9 100644 --- a/docs/source/shifterUserDocumentation.rst +++ b/docs/source/shifterUserDocumentation.rst @@ -114,7 +114,6 @@ UI .. image:: images/shifter/fbx_exporter/fbx_shifter.png * **File** - Allows for users to serialise there settings, incase they want to reload them, or use them in a scripted pipeline. -* **FBX SDK(Optional)** - Allows the specify where the FBX SDK can be found. This allows the UI to perform some extra :ref:`features ` Source Elements @@ -136,7 +135,7 @@ Settings You can specify the FBX export settings here. -If *FBX SDK* enabled, then you can also perform additional commands post export. +It also allows for some extra conditioning of the data upon export. - Remove Namespace - Clean up scene. @@ -156,6 +155,9 @@ It also **refreshes** the **Unreal Skeleton** list, by querying the current open .. image:: images/shifter/fbx_exporter/fbx_shifter_ue_no_path.png :align: center +.. note:: + If you have selected a skeleton and no longer what to import using the selected skeleton, or wish to generate a new skeleton on import, ctr click on the selected element to deselect it. + - **Directory**: The import location in Unreal for the SKM and Animations. .. image:: images/shifter/fbx_exporter/fbx_shifter_ue_select_folder.png @@ -181,34 +183,32 @@ Allows for the exporting of Skeletons and Geometry. - **Skinning**: Export Skinning data - **Blendshapes**: Export Blendshapes that exist on the geometry. +- **Partitions**: Export Partitioned FBXs. +- **Cull Joints**: With Cull Joints enabled, generated fbx partition files will have all unneccesary leaf nodes removed. +*Unnessary leaf nodes*, would be any joint that is no longer driving geometry and no longer required to drive any other joints that has skinning, to influence geometry that is part of the partition. + +.. note:: + Exporting the Skeletal Mesh, will trigger a mayabatch session, that performs all the file conditioning, and then performs the fbx exporting. **Partitions** -*(If available)* Performs partitioning of skeleton hierarchy data. +Performs partitioning of geometric data. +Partitions are designed to allow you to export once, and generate an FBX per a partition. Each generated FBX partition, will only contain the geometry that has been added to the partition. - When you add the **geometry roots**, all geometry child objects will get added to the **Master** partition. -Partitions are designed to allow you to export once, and generate new skeletons hierarchies that share the same root structure, but have all unneccesary leaf nodes removed. -*Unnessary leaf nodes*, would be any joint that is no longer driving geometry and no longer required to drive any other joints that have skinning. - .. image:: images/shifter/fbx_exporter/fbx_shifter_export_geo_partitions.png :align: center - Press the **"+"** button to create a custom partition. Once it has been created you can drag any other geometry objects from the master partition, to the custom partition. - Right click on a Partition to change its colour, duplicate or delete it. +- Toggling the button on the partition, will disable it from being exported. **Export Skeletal/SkinnedMesh**: Performs the FBX export, and if **"Enable Unreal Engine Import"** is active, the fbx's will be imported into the active Unreal Engine project. .. note:: If you want to use a pre-existing skeleton in Unreal, make sure to have selected the *skeleton* in the *Unreal Engine Imports* section. If you have not, a new Skeleton will be generated on import into Unreal. -.. _shifter-fbx-sdk-features: - -**FBX SDK Features** - -If you have FBX SDK enabled, it will allow you to export the fbx SKM, and create a Skeleton per a partition group. -The skeleton that is created per a group, has trimmed all bones that no longer drive any geometry objects in the partition. - Animation ++++++++++++++++++ @@ -220,6 +220,7 @@ Exports the Maya animation as an FBX. **Clips** allow for sections of the maya t **Clip** Clips allow you to create named animation exportd, that represent a section of time on the maya timeline. +New Clips will automatically read the duration of the Maya timeline, and use that as the start and end frame. - **Trash can**: Removes the clip. - **Name of the clip** will be appended to the file. eg. *BoyA_ROM*, *BoyA_Clip_2* From 19d9b9046d4f4b29c2df480519778ee961d01ad7 Mon Sep 17 00:00:00 2001 From: miquelcampos Date: Mon, 18 Dec 2023 14:15:37 +0900 Subject: [PATCH 05/12] fix menu typo --- release/scripts/mgear/uegear/menu.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/mgear/uegear/menu.py b/release/scripts/mgear/uegear/menu.py index 8ab79661..221bf10b 100644 --- a/release/scripts/mgear/uegear/menu.py +++ b/release/scripts/mgear/uegear/menu.py @@ -25,11 +25,11 @@ def install(): ), ("-----", None), ( - "Import Selected Camers from Sequencer", + "Import Selected Cameras from Sequencer", str_import_selected_cameras_from_unreal, ), ( - "Update Sequencer Camers from Maya Selection", + "Update Sequencer Cameras from Maya Selection", str_update_sequencer_camera_from_maya, ), ("-----", None), From 23f7234d522af5d9f08bfadc6d42a50dca4aecd0 Mon Sep 17 00:00:00 2001 From: Cesar Gallo Date: Mon, 18 Dec 2023 18:34:15 -0600 Subject: [PATCH 06/12] Applies ikhuman fixes --- .../scripts/mgear/animbits/humanIkMapper.py | 67 ++++++++++++++----- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/release/scripts/mgear/animbits/humanIkMapper.py b/release/scripts/mgear/animbits/humanIkMapper.py index bdc90ff7..e234ddde 100644 --- a/release/scripts/mgear/animbits/humanIkMapper.py +++ b/release/scripts/mgear/animbits/humanIkMapper.py @@ -268,6 +268,12 @@ def import_char_configuration(cls): pm.PyNode(cls.char_config[bone]["target"]) for bone in cls.char_config ] + + for bone in cls.char_config: + if cls.char_config[bone]["sub_ik"]: + bone_sub_iks = cls.char_config[bone]["sub_ik"] + ctls.extend([pm.PyNode(sub_ik) for sub_ik in bone_sub_iks]) + locked_ctrls = cls.get_locked_ctrls(ctls) if locked_ctrls: if LockedCtrlsDialog(ctrls_list=locked_ctrls).exec_(): @@ -289,22 +295,45 @@ def import_char_configuration(cls): ) @classmethod - def set_sub_ik(cls, bone_target, sub_ik_ctls): + def set_sub_ik(cls, bone_target, sub_ik_ctls, do_mirror=False): + + def sub_ik_setup(bone_target, sub_ik_ctls): + + if not pm.attributeQuery("sub_ik", node=bone_target, exists=True): + pm.addAttr(bone_target, longName="sub_ik", attributeType="message") + + for sub_ik_ctl in sub_ik_ctls: + + if not pm.attributeQuery("sub_ik", node=sub_ik_ctl, exists=True): + pm.addAttr( + sub_ik_ctl, longName="sub_ik", attributeType="message" + ) + + bone_target.sub_ik >> sub_ik_ctl.sub_ik + + # get ctrls + bone_target = pm.PyNode(bone_target) sub_ik_ctls = [pm.PyNode(ctl) for ctl in sub_ik_ctls] - if not pm.attributeQuery("sub_ik", node=bone_target, exists=True): - pm.addAttr(bone_target, longName="sub_ik", attributeType="message") + all_sub_ik_ctls = list(sub_ik_ctls) - for sub_ik_ctl in sub_ik_ctls: + if do_mirror: + opposite_bone_target = MirrorController.get_opposite_control(bone_target) + opposite_sub_ik_ctls = [MirrorController.get_opposite_control(ctl) for ctl in sub_ik_ctls] + all_sub_ik_ctls.extend(opposite_sub_ik_ctls) - if not pm.attributeQuery("sub_ik", node=sub_ik_ctl, exists=True): - pm.addAttr( - sub_ik_ctl, longName="sub_ik", attributeType="message" - ) + locked_ctrls = cls.get_locked_ctrls(all_sub_ik_ctls) + if locked_ctrls: + if LockedCtrlsDialog(ctrls_list=locked_ctrls).exec_(): + cls.unlock_ctrls_srt(locked_ctrls) + else: + return + + sub_ik_setup(bone_target, sub_ik_ctls) + if do_mirror: + sub_ik_setup(opposite_bone_target, opposite_sub_ik_ctls) - bone_target.sub_ik >> sub_ik_ctl.sub_ik - # pm.parentConstraint(bone_target, sub_ik_ctls, maintainOffset=True) @classmethod def clear_sub_ik(cls, bone_target): @@ -343,20 +372,25 @@ def sub_iks_binding(cls, activate=True): def bake(cls): current_ik_char = pm.mel.hikGetCurrentCharacter() attrs_string = " ".join(cls.get_sub_ik_bake_attrs()) + sub_ik_ctls = [cls.char_config[bone]["sub_ik"] for bone in cls.char_config if cls.char_config[bone]["sub_ik"]] + sub_ik_constraints = [cmds.parentConstraint(ctl, query=True) for ctl in sub_ik_ctls] + sub_ik_constraints_string = " ".join(sub_ik_constraints) mel_cmd = """ - + string $currCharacter = hikGetCurrentCharacter(); + if( $currCharacter != "" ) {{ - string $preBakeCmd = "hikBakeCharacterPre( \\"{0}\\" );"; + string $preBakeCmd = "hikBakeCharacterPre( \\"{0}\\" ); "; $preBakeCmd += "select -add {1};"; - string $postBakeCmd = "hikBakeCharacterPost( \\"{0}\\" )"; + string $postBakeCmd = "hikBakeCharacterPost( \\"{0}\\" ); "; + $postBakeCmd += "delete {2};"; performBakeSimulationArgList 2 {{ "1", "animationList", $preBakeCmd, $postBakeCmd }}; }} """.format( - current_ik_char, attrs_string + current_ik_char, attrs_string, sub_ik_constraints_string ) pm.mel.eval(mel_cmd) @@ -401,6 +435,8 @@ def __init__(self, parent=None): self.create_layout() self.create_connections() + self.update_mapping() + @QtCore.Slot() def adjustSize(self, *args, **kwargs): # Needed to mark the adjustSize method as slot @@ -697,7 +733,8 @@ def import_config(self): self.update_mapping() def set_selection_as_sub_ik(self, bone_target): - HumanIKMapper.set_sub_ik(bone_target, pm.ls(sl=1)) + do_mirror = self.mirror_checkbox.isChecked() + HumanIKMapper.set_sub_ik(bone_target, pm.ls(sl=1), do_mirror) self.update_mapping() def clear_sub_ik(self, bone_target): From 443260153a24cbc2d9f8e45b68167e7f663f5b4f Mon Sep 17 00:00:00 2001 From: Simon Anderson Date: Tue, 19 Dec 2023 17:17:19 +1300 Subject: [PATCH 07/12] Removed MayaBatch log file --- .../mgear/shifter/game_tools_fbx/partition_thread.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/release/scripts/mgear/shifter/game_tools_fbx/partition_thread.py b/release/scripts/mgear/shifter/game_tools_fbx/partition_thread.py index 1934f609..23448092 100644 --- a/release/scripts/mgear/shifter/game_tools_fbx/partition_thread.py +++ b/release/scripts/mgear/shifter/game_tools_fbx/partition_thread.py @@ -126,8 +126,8 @@ def export_skeletal_mesh(self): mayabatch_shell = False mayabatch_args.append("-script") mayabatch_args.append(shlex.quote(script_file_path)) - mayabatch_args.append("-log") - mayabatch_args.append(shlex.quote(log_path)) + # mayabatch_args.append("-log") + # mayabatch_args.append(shlex.quote(log_path)) print("-------------------------------------------") print("[Launching] MayaBatch") @@ -143,8 +143,8 @@ def export_skeletal_mesh(self): mayabatch_shell = True mayabatch_args.append("-script") mayabatch_args.append('"'+script_file_path+'"') - mayabatch_args.append("-log") - mayabatch_args.append('"'+log_path+'"') + # mayabatch_args.append("-log") + # mayabatch_args.append('"'+log_path+'"') mayabatch_args = "{}".format(" ".join(mayabatch_args)) From 5e234fa78c01e4deffd64664faa29bbf3cbf0738 Mon Sep 17 00:00:00 2001 From: Simon Anderson Date: Tue, 19 Dec 2023 22:07:00 +1300 Subject: [PATCH 08/12] Fixed namespace cleanup bug * Paths were being over cleaned up when a namespace appeared. ie long names were being converted into short names, when a namespace appeared. --- .../mgear/shifter/game_tools_fbx/fbx_batch.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/release/scripts/mgear/shifter/game_tools_fbx/fbx_batch.py b/release/scripts/mgear/shifter/game_tools_fbx/fbx_batch.py index 21d84d13..8fc7f044 100644 --- a/release/scripts/mgear/shifter/game_tools_fbx/fbx_batch.py +++ b/release/scripts/mgear/shifter/game_tools_fbx/fbx_batch.py @@ -540,8 +540,15 @@ def _count_namespaces(name): return name.count(':') def _trim_namespace_from_name(name): - if name.find(":") >= 0: - return name.split(":")[-1] + + split_long_name = name.split("|") + for i in range(len(split_long_name)): + meta_name = split_long_name[i] + if meta_name == "": + continue + if meta_name.find(":") >= 0: + split_long_name[i] = meta_name.split(":")[-1] + name = "|".join(split_long_name) return name def _remove_namespace(mobj): @@ -668,6 +675,8 @@ def _get_all_mesh_dag_objects(): Gets all mesh dag objects in scene. Only returns DAG object and not the shape node. + + returns list of full path names """ mesh_objects = [] From da82b545fe46b83485c1f2e0b04f070824ff14c1 Mon Sep 17 00:00:00 2001 From: Ran Weng Date: Tue, 19 Dec 2023 10:58:21 -0500 Subject: [PATCH 09/12] Rig Builder: add option to publish passed rigs only --- .../scripts/mgear/shifter/rig_builder/builder.py | 8 +++++--- release/scripts/mgear/shifter/rig_builder/ui.py | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/release/scripts/mgear/shifter/rig_builder/builder.py b/release/scripts/mgear/shifter/rig_builder/builder.py index 62be3b72..0e834bea 100644 --- a/release/scripts/mgear/shifter/rig_builder/builder.py +++ b/release/scripts/mgear/shifter/rig_builder/builder.py @@ -68,11 +68,13 @@ def generate_instance_report(self, output_name): report_string = "\n".join(results) return valid, report_string - def execute_build_logic(self, json_data, validate=True): + def execute_build_logic(self, json_data, validate=True, passed_only=False): """Execute the rig building logic based on the provided JSON data. Args: - json_data (str): A JSON string containing the necessary data. + json_data (str): A JSON string containing the necessary data + validate (bool): Option to run Pyblish validators + passed_only (bool): Option to publish only rigs that pass validation """ data = json.loads(json_data) report_string = self.format_report_header() @@ -106,7 +108,7 @@ def execute_build_logic(self, json_data, validate=True): valid, report = self.generate_instance_report(output_name) report_string += "{}\n".format(report) - if not valid: + if passed_only and not valid: save_build = False print("Found errors, please fix and rebuild the rig.") diff --git a/release/scripts/mgear/shifter/rig_builder/ui.py b/release/scripts/mgear/shifter/rig_builder/ui.py index d3260abf..9abff40d 100644 --- a/release/scripts/mgear/shifter/rig_builder/ui.py +++ b/release/scripts/mgear/shifter/rig_builder/ui.py @@ -45,7 +45,7 @@ def create_layout(self): run_validators_layout = QtWidgets.QHBoxLayout() self.layout.addLayout(run_validators_layout) - run_label = QtWidgets.QLabel("Run Validators") + run_label = QtWidgets.QLabel("Run Pyblish Validators") self.run_validators_checkbox = QtWidgets.QCheckBox() self.run_validators_checkbox.setChecked(True) run_validators_layout.addWidget(run_label) @@ -59,6 +59,13 @@ def create_layout(self): run_validators_layout.addWidget(self.results_popup_checkbox) run_validators_layout.addStretch() + self.publish_label = QtWidgets.QLabel("Publish Passed Rigs Only") + self.publish_passed_checkbox = QtWidgets.QCheckBox() + self.publish_passed_checkbox.setChecked(True) + run_validators_layout.addWidget(self.publish_label) + run_validators_layout.addWidget(self.publish_passed_checkbox) + run_validators_layout.addStretch() + # File Table UI self.table_widget = QtWidgets.QTableWidget() self.table_widget.setColumnCount(2) @@ -105,6 +112,8 @@ def on_run_validators_checkbox_changed(self): runState = self.run_validators_checkbox.isChecked() self.results_label.setEnabled(runState) self.results_popup_checkbox.setEnabled(runState) + self.publish_label.setEnabled(runState) + self.publish_passed_checkbox.setEnabled(runState) def on_add_button_clicked(self): file_paths, _ = QtWidgets.QFileDialog.getOpenFileNames( @@ -132,7 +141,10 @@ def on_remove_button_clicked(self): def on_build_button_clicked(self): data = self.collect_table_data() validate = self.run_validators_checkbox.isChecked() - results_dict = self.builder.execute_build_logic(data, validate=validate) + passed_rigs_only = self.publish_passed_checkbox.isChecked() + results_dict = self.builder.execute_build_logic( + data, validate=validate, passed_only=passed_rigs_only + ) if ( self.run_validators_checkbox.isChecked() and self.results_popup_checkbox.isChecked() From 5fa871d91b8d07598fbf62a6a43ffbbd90eacd6b Mon Sep 17 00:00:00 2001 From: Ran Weng Date: Tue, 19 Dec 2023 12:20:31 -0500 Subject: [PATCH 10/12] Rig Builder: check if pyblish is available in environment --- .../mgear/shifter/rig_builder/builder.py | 24 +++++++++++++++---- .../scripts/mgear/shifter/rig_builder/ui.py | 18 ++++++++++---- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/release/scripts/mgear/shifter/rig_builder/builder.py b/release/scripts/mgear/shifter/rig_builder/builder.py index 0e834bea..63c33641 100644 --- a/release/scripts/mgear/shifter/rig_builder/builder.py +++ b/release/scripts/mgear/shifter/rig_builder/builder.py @@ -9,10 +9,22 @@ def setup_pyblish(): - pyblish.api.register_host("maya") - pyblish.api.register_gui("pyblish_lite") - plugin_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "plugins") - pyblish.api.register_plugin_path(plugin_dir) + try: + import pyblish.api + import pyblish.util + + pyblish.api.register_host("maya") + pyblish.api.register_gui("pyblish_lite") + plugin_dir = os.path.join( + os.path.dirname(os.path.realpath(__file__)), "plugins" + ) + pyblish.api.register_plugin_path(plugin_dir) + return True + except: + import maya.api.OpenMaya as om + + om.MGlobal.displayInfo("Could not setup Pyblish, exiting.") + return False class RigBuilder(object): @@ -118,5 +130,7 @@ def execute_build_logic(self, json_data, validate=True, passed_only=False): cmds.file(save=save_build, type="mayaAscii") cmds.file(new=True, force=True) - print(report_string) + if validate: + print(report_string) + return self.results_dict diff --git a/release/scripts/mgear/shifter/rig_builder/ui.py b/release/scripts/mgear/shifter/rig_builder/ui.py index 9abff40d..9bc42730 100644 --- a/release/scripts/mgear/shifter/rig_builder/ui.py +++ b/release/scripts/mgear/shifter/rig_builder/ui.py @@ -7,7 +7,7 @@ from mgear.core import pyqt, widgets from mgear.shifter.rig_builder import builder -builder.setup_pyblish() +PYBLISH_READY = builder.setup_pyblish() class RigBuilderUI(MayaQWidgetDockableMixin, QtWidgets.QDialog, pyqt.SettingsMixin): @@ -61,11 +61,16 @@ def create_layout(self): self.publish_label = QtWidgets.QLabel("Publish Passed Rigs Only") self.publish_passed_checkbox = QtWidgets.QCheckBox() - self.publish_passed_checkbox.setChecked(True) run_validators_layout.addWidget(self.publish_label) run_validators_layout.addWidget(self.publish_passed_checkbox) run_validators_layout.addStretch() + if not PYBLISH_READY: + run_label.setEnabled(False) + self.run_validators_checkbox.setEnabled(False) + self.run_validators_checkbox.setChecked(False) + self.on_run_validators_checkbox_changed() + # File Table UI self.table_widget = QtWidgets.QTableWidget() self.table_widget.setColumnCount(2) @@ -94,7 +99,7 @@ def create_layout(self): def create_connections(self): self.output_folder_button.clicked.connect(self.on_output_folder_clicked) - self.run_validators_checkbox.stateChanged.connect( + self.run_validators_checkbox.toggled.connect( self.on_run_validators_checkbox_changed ) self.add_button.clicked.connect(self.on_add_button_clicked) @@ -219,6 +224,7 @@ def __init__(self, results): def create_results_view(self): self.results_tree = QtWidgets.QTreeView() self.results_tree.setAlternatingRowColors(True) + self.results_tree.setWordWrap(True) self.layout.addWidget(self.results_tree) model = QtGui.QStandardItemModel() @@ -235,18 +241,22 @@ def create_results_view(self): def add_result_entry(self, model, rig_name, checks_dict): group_root = QtGui.QStandardItem(rig_name) model.appendRow(group_root) + summary_string = "All checks passed!" for i, (check_name, check_data) in enumerate(checks_dict.items()): result_string = "Passed" if check_data.get("success") else "Failed" error = check_data.get("error") if error is not None: result_string += " - {}".format(error) - + summary_string = "Some checks failed, please review errors." check_item = QtGui.QStandardItem(check_name) result_item = QtGui.QStandardItem(result_string) group_root.setChild(i, 1, check_item) group_root.setChild(i, 2, result_item) + summary_item = QtGui.QStandardItem(summary_string) + model.setItem(group_root.row(), 2, summary_item) + def openRigBuilderUI(*args): pyqt.showDialog(RigBuilderUI, dockable=True) From b5a3f29f97f4c758afcb2212976745e9efe40f81 Mon Sep 17 00:00:00 2001 From: Ran Weng Date: Tue, 19 Dec 2023 14:18:07 -0500 Subject: [PATCH 11/12] Rig Builder: improve pyblish setup logic --- .../mgear/shifter/rig_builder/builder.py | 33 ++++++++----------- .../scripts/mgear/shifter/rig_builder/ui.py | 4 +-- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/release/scripts/mgear/shifter/rig_builder/builder.py b/release/scripts/mgear/shifter/rig_builder/builder.py index 63c33641..9d9fd053 100644 --- a/release/scripts/mgear/shifter/rig_builder/builder.py +++ b/release/scripts/mgear/shifter/rig_builder/builder.py @@ -1,30 +1,25 @@ import json import os +import maya.api.OpenMaya as om import maya.cmds as cmds -import pyblish.api -import pyblish.util from mgear.shifter import io +try: + import pyblish.api + import pyblish.util -def setup_pyblish(): - try: - import pyblish.api - import pyblish.util + pyblish.api.register_host("maya") + pyblish.api.register_gui("pyblish_lite") + plugin_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "plugins") + pyblish.api.register_plugin_path(plugin_dir) - pyblish.api.register_host("maya") - pyblish.api.register_gui("pyblish_lite") - plugin_dir = os.path.join( - os.path.dirname(os.path.realpath(__file__)), "plugins" - ) - pyblish.api.register_plugin_path(plugin_dir) - return True - except: - import maya.api.OpenMaya as om - - om.MGlobal.displayInfo("Could not setup Pyblish, exiting.") - return False + PYBLISH_READY = True + om.MGlobal.displayInfo("Successfully imported Pyblish.") +except: + PYBLISH_READY = False + om.MGlobal.displayWarning("Could not setup Pyblish, disabling validator option.") class RigBuilder(object): @@ -113,7 +108,7 @@ def execute_build_logic(self, json_data, validate=True, passed_only=False): save_build = True context = None - if validate: + if PYBLISH_READY and validate: print("Validating rig '{}'...\n".format(output_name)) context = self.run_validators() self.build_results_dict(output_name, context) diff --git a/release/scripts/mgear/shifter/rig_builder/ui.py b/release/scripts/mgear/shifter/rig_builder/ui.py index 9bc42730..0dc7cff4 100644 --- a/release/scripts/mgear/shifter/rig_builder/ui.py +++ b/release/scripts/mgear/shifter/rig_builder/ui.py @@ -7,8 +7,6 @@ from mgear.core import pyqt, widgets from mgear.shifter.rig_builder import builder -PYBLISH_READY = builder.setup_pyblish() - class RigBuilderUI(MayaQWidgetDockableMixin, QtWidgets.QDialog, pyqt.SettingsMixin): """ @@ -65,7 +63,7 @@ def create_layout(self): run_validators_layout.addWidget(self.publish_passed_checkbox) run_validators_layout.addStretch() - if not PYBLISH_READY: + if not builder.PYBLISH_READY: run_label.setEnabled(False) self.run_validators_checkbox.setEnabled(False) self.run_validators_checkbox.setChecked(False) From 88dd9796fe044eae1172b26e5cc6ca8e450ac4ce Mon Sep 17 00:00:00 2001 From: Ran Weng Date: Tue, 19 Dec 2023 15:28:29 -0500 Subject: [PATCH 12/12] Rig Builder: docstrings and code clean-up --- .../mgear/shifter/rig_builder/builder.py | 28 +++++++++--- .../scripts/mgear/shifter/rig_builder/ui.py | 43 ++++++++++++------- 2 files changed, 50 insertions(+), 21 deletions(-) diff --git a/release/scripts/mgear/shifter/rig_builder/builder.py b/release/scripts/mgear/shifter/rig_builder/builder.py index 9d9fd053..89bc0efc 100644 --- a/release/scripts/mgear/shifter/rig_builder/builder.py +++ b/release/scripts/mgear/shifter/rig_builder/builder.py @@ -27,11 +27,21 @@ def __init__(self): self.results_dict = {} def run_validators(self): + """Runs the Pyblish validators.""" context = pyblish.util.collect() pyblish.util.validate(context) return context def build_results_dict(self, output_name, context): + """Builds a nested dictionary containing Pyblish validator results for each rig. + + Args: + output_name (str): name of the rig and its output file + context: Pyblish context containing results data + + The dictionary is stored in self.results_dict with this structure: + { rig_name: { check_name: { results } } } + """ self.results_dict[output_name] = {} results = context.data.get("results") @@ -46,15 +56,18 @@ def build_results_dict(self, output_name, context): "error": error, } - def get_results_dict(self): - return self.results_dict - def format_report_header(self): + """Creates the header for the validator report string.""" header_string = "{:<10}{:<40}{:<80}".format("Success", "Plug-in", "Instance") header = "{}\n{}\n".format(header_string, "-" * 70) return header def generate_instance_report(self, output_name): + """Appends the validator results of the specified rig to the report string. + + Args: + output_name (str): name of the rig and its output file + """ result_string = "{success:<10}{check_name:<40}{instance} - {output_name}" error_string = "{:<10} > error: {:<80}" valid = True @@ -76,7 +89,9 @@ def generate_instance_report(self, output_name): return valid, report_string def execute_build_logic(self, json_data, validate=True, passed_only=False): - """Execute the rig building logic based on the provided JSON data. + """ + Executes the rig building logic based on the provided JSON data. + Optionally runs Pyblish validators on the builds. Args: json_data (str): A JSON string containing the necessary data @@ -84,7 +99,6 @@ def execute_build_logic(self, json_data, validate=True, passed_only=False): passed_only (bool): Option to publish only rigs that pass validation """ data = json.loads(json_data) - report_string = self.format_report_header() data_rows = data.get("rows") if not data_rows: @@ -106,8 +120,10 @@ def execute_build_logic(self, json_data, validate=True, passed_only=False): print("Building rig '{}'...".format(output_name)) io.build_from_file(file_path) - save_build = True context = None + save_build = True + report_string = self.format_report_header() + if PYBLISH_READY and validate: print("Validating rig '{}'...\n".format(output_name)) context = self.run_validators() diff --git a/release/scripts/mgear/shifter/rig_builder/ui.py b/release/scripts/mgear/shifter/rig_builder/ui.py index 0dc7cff4..c7c8955a 100644 --- a/release/scripts/mgear/shifter/rig_builder/ui.py +++ b/release/scripts/mgear/shifter/rig_builder/ui.py @@ -25,6 +25,7 @@ def __init__(self): self.create_connections() def create_layout(self): + """Creates the main layout widgets of the tool.""" self.layout = QtWidgets.QVBoxLayout() self.setLayout(self.layout) @@ -43,28 +44,21 @@ def create_layout(self): run_validators_layout = QtWidgets.QHBoxLayout() self.layout.addLayout(run_validators_layout) - run_label = QtWidgets.QLabel("Run Pyblish Validators") - self.run_validators_checkbox = QtWidgets.QCheckBox() + self.run_validators_checkbox = QtWidgets.QCheckBox("Run Pyblish Validators") self.run_validators_checkbox.setChecked(True) - run_validators_layout.addWidget(run_label) run_validators_layout.addWidget(self.run_validators_checkbox) run_validators_layout.addStretch() - self.results_label = QtWidgets.QLabel("Open Results Pop-Up") - self.results_popup_checkbox = QtWidgets.QCheckBox() + self.results_popup_checkbox = QtWidgets.QCheckBox("Open Results Pop-Up") self.results_popup_checkbox.setChecked(True) - run_validators_layout.addWidget(self.results_label) run_validators_layout.addWidget(self.results_popup_checkbox) run_validators_layout.addStretch() self.publish_label = QtWidgets.QLabel("Publish Passed Rigs Only") - self.publish_passed_checkbox = QtWidgets.QCheckBox() - run_validators_layout.addWidget(self.publish_label) + self.publish_passed_checkbox = QtWidgets.QCheckBox("Publish Passed Rigs Only") run_validators_layout.addWidget(self.publish_passed_checkbox) - run_validators_layout.addStretch() if not builder.PYBLISH_READY: - run_label.setEnabled(False) self.run_validators_checkbox.setEnabled(False) self.run_validators_checkbox.setChecked(False) self.on_run_validators_checkbox_changed() @@ -96,6 +90,7 @@ def create_layout(self): self.layout.addWidget(self.build_button) def create_connections(self): + """Connects buttons to their functions.""" self.output_folder_button.clicked.connect(self.on_output_folder_clicked) self.run_validators_checkbox.toggled.connect( self.on_run_validators_checkbox_changed @@ -105,6 +100,7 @@ def create_connections(self): self.build_button.clicked.connect(self.on_build_button_clicked) def on_output_folder_clicked(self): + """Sets the output folder for exported builds.""" folder_path = QtWidgets.QFileDialog.getExistingDirectory( self, "Select Output Folder" ) @@ -112,13 +108,13 @@ def on_output_folder_clicked(self): self.output_folder_line_edit.setText(folder_path) def on_run_validators_checkbox_changed(self): + """Enables/disables options for Pyblish validators.""" runState = self.run_validators_checkbox.isChecked() - self.results_label.setEnabled(runState) self.results_popup_checkbox.setEnabled(runState) - self.publish_label.setEnabled(runState) self.publish_passed_checkbox.setEnabled(runState) def on_add_button_clicked(self): + """Adds selected .sgt files from the list.""" file_paths, _ = QtWidgets.QFileDialog.getOpenFileNames( self, "Select .sgt Files", "", "*.sgt" ) @@ -127,7 +123,7 @@ def on_add_button_clicked(self): self.add_file(file_path) def on_remove_button_clicked(self): - """Remove selected .sgt files from the list.""" + """Removes selected .sgt files from the list.""" selected_ranges = self.table_widget.selectedRanges() # Get unique rows to be removed @@ -142,6 +138,7 @@ def on_remove_button_clicked(self): self.table_widget.removeRow(row) def on_build_button_clicked(self): + """Runs the rig build and validators, if specified.""" data = self.collect_table_data() validate = self.run_validators_checkbox.isChecked() passed_rigs_only = self.publish_passed_checkbox.isChecked() @@ -155,10 +152,10 @@ def on_build_button_clicked(self): self.create_results_popup(results_dict) def collect_table_data(self): - """Collect data from the table widget and output as JSON. + """Collects data from the table widget and outputs it as JSON. Returns: - str: A JSON string containing the collected data. + str: A JSON string containing the collected data """ data = {} row_count = self.table_widget.rowCount() @@ -177,6 +174,11 @@ def collect_table_data(self): return json.dumps(data) def add_file(self, file_path): + """Adds a .sgt file to the main table. + + Args: + file_path (str): Path of .sgt file + """ row_position = self.table_widget.rowCount() self.table_widget.insertRow(row_position) @@ -190,6 +192,11 @@ def add_file(self, file_path): self.table_widget.setItem(row_position, 1, output_item) def create_results_popup(self, results_dict): + """Launches a pop-up containing validator results. + + Args: + results_dict (dict): validator result data generated by RigBuilder + """ popup = ResultsPopupDialog(results_dict) popup.exec() @@ -207,6 +214,10 @@ def dropEvent(self, e): class ResultsPopupDialog(QtWidgets.QDialog): + """ + A custom pop-up to display Pyblish validator results. + """ + def __init__(self, results): super(ResultsPopupDialog, self).__init__() self.setWindowTitle("Validator Results") @@ -220,6 +231,7 @@ def __init__(self, results): self.create_results_view() def create_results_view(self): + """Creates the main tree layout.""" self.results_tree = QtWidgets.QTreeView() self.results_tree.setAlternatingRowColors(True) self.results_tree.setWordWrap(True) @@ -237,6 +249,7 @@ def create_results_view(self): self.results_tree.setExpanded(idx, True) def add_result_entry(self, model, rig_name, checks_dict): + """Adds a collapsible entry of results for each rig.""" group_root = QtGui.QStandardItem(rig_name) model.appendRow(group_root) summary_string = "All checks passed!"