Brushstroke Tools: Initial Version #328

Merged
Simon Thommes merged 229 commits from SimonThommes/blender-studio-tools:brushstroke_tools-initial-version into main 2024-11-06 15:03:47 +01:00
2 changed files with 39 additions and 1 deletions
Showing only changes of commit 6095595ed3 - Show all commits

View File

@ -487,6 +487,43 @@ class BSBST_OT_preset_toggle_attribute(bpy.types.Operator):
modifier_name=self.modifier_name) modifier_name=self.modifier_name)
return {"FINISHED"} return {"FINISHED"}
class BSBST_OT_brushstrokes_toggle_attribute(bpy.types.Operator):
"""
Toggle use_attribute property for a socket on a specific object's modifier.
(Workaround due to how these are actually stored as integer in Blender)
"""
bl_idname = "brushstroke_tools.brushstrokes_toggle_attribute"
bl_label = "Toggle Attribute"
bl_description = "Toggle using a named attribute for this input"
bl_options = {"REGISTER", "UNDO"}
modifier_name: bpy.props.StringProperty(default='GeometryNodes')
input_name: bpy.props.StringProperty(default='Socket_2')
@classmethod
def poll(cls, context):
settings = context.scene.BSBST_settings
return settings.preset_object
def execute(self, context):
settings = context.scene.BSBST_settings
edit_toggle = settings.edit_toggle
settings.edit_toggle = False
active_bs = settings.context_brushstrokes[settings.active_context_brushstrokes_index]
bs_ob = bpy.data.objects.get(active_bs.name)
if not bs_ob:
settings.edit_toggle = edit_toggle
return {"CANCELLED"}
override = context.copy()
override['object'] = bs_ob
with context.temp_override(**override):
bpy.ops.object.geometry_nodes_input_attribute_toggle(input_name=self.input_name,
modifier_name=self.modifier_name)
return {"FINISHED"}
classes = [ classes = [
BSBST_OT_new_brushstrokes, BSBST_OT_new_brushstrokes,
BSBST_OT_edit_brushstrokes, BSBST_OT_edit_brushstrokes,
@ -496,6 +533,7 @@ classes = [
BSBST_OT_preset_add_mod, BSBST_OT_preset_add_mod,
BSBST_OT_preset_remove_mod, BSBST_OT_preset_remove_mod,
BSBST_OT_preset_toggle_attribute, BSBST_OT_preset_toggle_attribute,
BSBST_OT_brushstrokes_toggle_attribute,
] ]
def register(): def register():

View File

@ -95,7 +95,7 @@ def draw_panel_ui_recursive(panel, panel_name, mod, items, display_mode, hide_pa
depress=mod[f'{v.identifier}_use_attribute'], depress=mod[f'{v.identifier}_use_attribute'],
icon='SPREADSHEET') icon='SPREADSHEET')
else: else:
toggle = input_row.operator('object.geometry_nodes_input_attribute_toggle', toggle = input_row.operator('brushstroke_tools.brushstrokes_toggle_attribute',
text='', text='',
depress=mod[f'{v.identifier}_use_attribute'], depress=mod[f'{v.identifier}_use_attribute'],
icon='SPREADSHEET') icon='SPREADSHEET')