more dynamic UI

This commit is contained in:
pullusb 2025-07-22 16:16:38 +02:00
parent c87c29596e
commit 4626f5c15d

View File

@ -20,7 +20,7 @@ class RT_OT_list_object_affected_by_simplify(Operator):
render = context.scene.render render = context.scene.render
simplify_viewport = render.simplify_subdivision simplify_viewport = render.simplify_subdivision
simplify_render = render.simplify_subdivision_render simplify_render = render.simplify_subdivision_render
max_child_particles = render.simplify_child_particles max_child_particles = min(render.simplify_child_particles, render.simplify_child_particles_render)
volume_limit_resolution = render.simplify_volumes volume_limit_resolution = render.simplify_volumes
for obj in context.scene.objects: for obj in context.scene.objects:
@ -115,6 +115,8 @@ class RT_OT_list_object_affected_by_simplify(Operator):
def draw(self, context): def draw(self, context):
layout = self.layout layout = self.layout
layout.use_property_decorate = False
layout.use_property_split = True
render = context.scene.render render = context.scene.render
## Show simplify settings ## Show simplify settings
# layout.label(text="Simplify Settings:") # layout.label(text="Simplify Settings:")
@ -124,19 +126,6 @@ class RT_OT_list_object_affected_by_simplify(Operator):
layout.label(text="Render:") layout.label(text="Render:")
bpy.types.RENDER_PT_simplify_render.draw(self, context) bpy.types.RENDER_PT_simplify_render.draw(self, context)
# row = box.row()
# row.label(text="Current Simplify Settings:", icon='SETTINGS')
# col = box.column(align=True)
# row = col.row()
# # row.label(text=f"Enabled: {render.use_simplify}")
# row.prop(render, "use_simplify") # Enabled
# row = col.row()
# # row.label(text=f"Viewport Subdivision: {render.simplify_subdivision}")
# row.prop(render, "simplify_subdivision") # Viewport
# row = col.row()
# # row.label(text=f"Render Subdivision: {render.simplify_subdivision_render}")
# row.prop(render, "simplify_subdivision_render") # Render
layout.separator() layout.separator()
@ -153,63 +142,129 @@ class RT_OT_list_object_affected_by_simplify(Operator):
obj, affected_data, icon = obj_data obj, affected_data, icon = obj_data
for i, data in enumerate(affected_data): for i, data in enumerate(affected_data):
row = col.row()
if i == 0:
# Show object name and icon for first item
op = row.operator('rt.select_object_by_name', text=obj.name, icon=icon, emboss=False)
op.object_name = obj.name
else:
# Subsequent rows, show empty space
row.label(text=' ', icon='BLANK1')
# Show the specific affected feature # Show the specific affected feature
if data['type'] == 'SUBSURF': if data['type'] == 'SUBSURF':
mod = data['modifier'] mod = data['modifier']
row.label(text=f"SubSurf: {mod.name}", icon='MOD_SUBSURF')
# Show viewport levels # Modifier name row
sub_row = row.row(align=True) row = col.row()
sub_row.label(text=f"V: {data['viewport_current']}{data['viewport_limited']}") if i == 0:
# Show object name and icon for first item
op = row.operator('rt.select_object_by_name', text=obj.name, icon=icon, emboss=False)
op.object_name = obj.name
else:
# Subsequent rows, show empty space
row.label(text=' ', icon='BLANK1')
# Modifier name as operator + Viewport levels on same row
op = row.operator('rt.select_object_by_name', text=mod.name, icon='MOD_SUBSURF', emboss=False)
op.object_name = obj.name
op.modifier_name = mod.name
row.label(text="Viewport:")
row.prop(mod, "levels", text="")
# Show render levels # Render levels row (indented)
sub_row = row.row(align=True) row = col.row()
sub_row.label(text=f"R: {data['render_current']}{data['render_limited']}") # Indent to match
row.label(text=' ', icon='BLANK1')
row.label(text=' ', icon='BLANK1')
row.label(text="Render:")
row.prop(mod, "render_levels", text="")
elif data['type'] == 'MULTIRES': elif data['type'] == 'MULTIRES':
mod = data['modifier'] mod = data['modifier']
row.label(text=f"Multires: {mod.name}", icon='MOD_MULTIRES')
# Show viewport levels # Modifier name row
sub_row = row.row(align=True) row = col.row()
sub_row.label(text=f"V: {data['viewport_current']}{data['viewport_limited']}") if i == 0:
# Show object name and icon for first item
op = row.operator('rt.select_object_by_name', text=obj.name, icon=icon, emboss=False)
op.object_name = obj.name
else:
# Subsequent rows, show empty space
row.label(text=' ', icon='BLANK1')
# Show render levels # Modifier name as operator + Viewport levels on same row
sub_row = row.row(align=True) op = row.operator('rt.select_object_by_name', text=mod.name, icon='MOD_MULTIRES', emboss=False)
sub_row.label(text=f"R: {data['render_current']}{data['render_limited']}") op.object_name = obj.name
op.modifier_name = mod.name
row.label(text="Viewport:")
row.prop(mod, "levels", text="")
# Render levels row (indented)
row = col.row()
# Indent to match
row.label(text=' ', icon='BLANK1')
row.label(text=' ', icon='BLANK1')
row.label(text="Render:")
row.prop(mod, "render_levels", text="")
elif data['type'] == 'PARTICLE': elif data['type'] == 'PARTICLE':
row = col.row()
if i == 0:
# Show object name and icon for first item
op = row.operator('rt.select_object_by_name', text=obj.name, icon=icon, emboss=False)
op.object_name = obj.name
else:
# Subsequent rows, show empty space
row.label(text=' ', icon='BLANK1')
psys = data['particle_system'] psys = data['particle_system']
row.label(text=f"Particles: {psys.name}", icon='PARTICLES') row.label(text=f"Particles: {psys.name}", icon='PARTICLES')
row.label(text=f"Type: {data['particle_type']}") row.label(text=f"Type: {data['particle_type']}")
row.label(text=f"Count: {data['count']}") row.label(text=f"Count: {data['count']}")
elif data['type'] == 'HAIR': elif data['type'] == 'HAIR':
row = col.row()
if i == 0:
# Show object name and icon for first item
op = row.operator('rt.select_object_by_name', text=obj.name, icon=icon, emboss=False)
op.object_name = obj.name
else:
# Subsequent rows, show empty space
row.label(text=' ', icon='BLANK1')
mod = data['modifier'] mod = data['modifier']
row.label(text=f"Hair: {mod.name}", icon='HAIR') row.label(text=f"Hair: {mod.name}", icon='HAIR')
row.label(text=f"Node Group: {data['node_group']}") row.label(text=f"Node Group: {data['node_group']}")
elif data['type'] == 'SUBSURFACE': elif data['type'] == 'SUBSURFACE':
row = col.row()
if i == 0:
# Show object name and icon for first item
op = row.operator('rt.select_object_by_name', text=obj.name, icon=icon, emboss=False)
op.object_name = obj.name
else:
# Subsequent rows, show empty space
row.label(text=' ', icon='BLANK1')
mat = data['material'] mat = data['material']
row.label(text=f"Material: {mat.name}", icon='MATERIAL') row.label(text=f"Material: {mat.name}", icon='MATERIAL')
row.label(text=f"Subsurface: {data['subsurface_value']:.3f}") row.label(text=f"Subsurface: {data['subsurface_value']:.3f}")
elif data['type'] == 'VOLUME_MAT': elif data['type'] == 'VOLUME_MAT':
row = col.row()
if i == 0:
# Show object name and icon for first item
op = row.operator('rt.select_object_by_name', text=obj.name, icon=icon, emboss=False)
op.object_name = obj.name
else:
# Subsequent rows, show empty space
row.label(text=' ', icon='BLANK1')
mat = data['material'] mat = data['material']
row.label(text=f"Volume Material: {mat.name}", icon='MATERIAL') row.label(text=f"Volume Material: {mat.name}", icon='MATERIAL')
elif data['type'] == 'VOLUME_OBJ': elif data['type'] == 'VOLUME_OBJ':
row = col.row()
if i == 0:
# Show object name and icon for first item
op = row.operator('rt.select_object_by_name', text=obj.name, icon=icon, emboss=False)
op.object_name = obj.name
else:
# Subsequent rows, show empty space
row.label(text=' ', icon='BLANK1')
row.label(text="Volume Object", icon='VOLUME_DATA') row.label(text="Volume Object", icon='VOLUME_DATA')
def execute(self, context): def execute(self, context):