Skip to content

Commit 3ee5d65

Browse files
Allow removing multiple controller nodes at once.
1 parent e90caab commit 3ee5d65

1 file changed

Lines changed: 24 additions & 5 deletions

File tree

  • python/mmSolver/tools/removecontroller2

python/mmSolver/tools/removecontroller2/tool.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,25 +21,44 @@
2121
import mmSolver.logger
2222
import mmSolver.utils.constant as const_utils
2323
import mmSolver.utils.time as time_utils
24+
import mmSolver.utils.node as node_utils
2425
import mmSolver.utils.tools as tools_utils
2526
import mmSolver.tools.createcontroller2.lib as lib
2627

2728
LOG = mmSolver.logger.get_logger()
2829

2930

3031
def main():
31-
selection = maya.cmds.ls(selection=True)
32-
if not len(selection) == 1:
33-
LOG.warn("Please select only one controller.")
32+
nodes = maya.cmds.ls(
33+
selection=True,
34+
long=True,
35+
type='transform') or []
36+
if len(nodes) == 0:
37+
LOG.warn("Please select at least 1 transform.")
3438
return
3539
start_frame, end_frame = time_utils.get_maya_timeline_range_inner()
40+
41+
# Sort nodes by depth, deeper nodes first, so we do do not remove
42+
# parents before children.
43+
nodes = node_utils.sort_nodes_by_depth(nodes, reverse=True)
44+
45+
# Channels to bake.
46+
attrs = lib._get_selected_channel_box_attrs()
47+
if len(attrs) == 0:
48+
attrs = lib.TRANSFORM_ATTRS
49+
50+
baked_nodes = []
3651
ctx = tools_utils.tool_context(
3752
use_undo_chunk=True,
3853
restore_current_frame=True,
3954
use_dg_evaluation_mode=True,
4055
disable_viewport=True,
4156
disable_viewport_mode=const_utils.DISABLE_VIEWPORT_MODE_VP1_VALUE)
4257
with ctx:
43-
lib.remove_controller(selection[0], start_frame, end_frame)
58+
for node in nodes:
59+
if maya.cmds.objExists(node) is False:
60+
continue
61+
baked_nodes += lib.remove_controller(
62+
node, start_frame, end_frame, attrs=attrs)
63+
maya.cmds.select(baked_nodes, replace=True)
4464
return
45-

0 commit comments

Comments
 (0)