87 lines
2.6 KiB
Python
87 lines
2.6 KiB
Python
"""
|
|
Global list of hotkey-able functions within the plugin.
|
|
|
|
|
|
These functions will be embedded in end-user's hotkey setup by absolute path (package.function_name)
|
|
so the names should not fluctuate.
|
|
"""
|
|
|
|
from ngSkinTools2.api import NamedPaintTarget, PaintTool, WeightsDisplayMode, plugin
|
|
from ngSkinTools2.api.paint import MaskDisplayMode
|
|
from ngSkinTools2.api.session import session, withSession
|
|
from ngSkinTools2.operations.paint import FloodAction, PaintAction
|
|
from ngSkinTools2.ui.action import do_action_hotkey
|
|
|
|
|
|
def paint_tool_start():
|
|
do_action_hotkey(PaintAction)
|
|
|
|
|
|
def paint_tool_toggle_help():
|
|
plugin.ngst2_hotkey(paintContextToggleHelp=True)
|
|
|
|
|
|
def paint_tool_flood():
|
|
do_action_hotkey(FloodAction)
|
|
|
|
|
|
def paint_tool_focus_current_influence():
|
|
plugin.ngst2_hotkey(paintContextViewFit=True)
|
|
|
|
|
|
def paint_tool_brush_size():
|
|
plugin.ngst2_hotkey(paintContextBrushSize=True)
|
|
|
|
|
|
def paint_tool_brush_size_release():
|
|
plugin.ngst2_hotkey(paintContextBrushSize=False)
|
|
|
|
|
|
def paint_tool_sample_influence():
|
|
plugin.ngst2_hotkey(paintContextSampleInfluence=True)
|
|
|
|
|
|
def paint_tool_sample_influence_release():
|
|
plugin.ngst2_hotkey(paintContextSampleInfluence=False)
|
|
|
|
|
|
@withSession
|
|
def select_paint_brush_intensity():
|
|
from ngSkinTools2.ui.brush_settings_popup import brush_settings_popup
|
|
|
|
brush_settings_popup(session.paint_tool)
|
|
|
|
|
|
@withSession
|
|
def paint_tool_toggle_original_mesh():
|
|
paint = session.paint_tool
|
|
paint.display_settings.display_node_visible = not paint.display_settings.display_node_visible
|
|
session.events.toolChanged.emit()
|
|
|
|
|
|
@withSession
|
|
def paint_tool_cycle_weights_display_mode():
|
|
"""
|
|
cycle current display mode "all influences" -> "current influence" -> "current influence colored"
|
|
:return:
|
|
"""
|
|
paint = session.paint_tool
|
|
|
|
targets = session.state.currentInfluence.targets
|
|
is_mask_mode = targets is not None and len(targets) == 1 and targets[0] == NamedPaintTarget.MASK
|
|
|
|
settings = paint.display_settings
|
|
if is_mask_mode:
|
|
settings.mask_display_mode = {
|
|
MaskDisplayMode.default_: MaskDisplayMode.color_ramp,
|
|
MaskDisplayMode.color_ramp: MaskDisplayMode.default_,
|
|
}.get(settings.mask_display_mode, MaskDisplayMode.default_)
|
|
else:
|
|
settings.weights_display_mode = {
|
|
WeightsDisplayMode.allInfluences: WeightsDisplayMode.currentInfluence,
|
|
WeightsDisplayMode.currentInfluence: WeightsDisplayMode.currentInfluenceColored,
|
|
WeightsDisplayMode.currentInfluenceColored: WeightsDisplayMode.allInfluences,
|
|
}.get(settings.weights_display_mode, WeightsDisplayMode.allInfluences)
|
|
|
|
session.events.toolChanged.emit()
|