diff options
author | Vuk GardaÅ¡eviÄ <lijenstina> | 2018-08-17 13:05:16 +0300 |
---|---|---|
committer | Pablo Vazquez <venomgfx@gmail.com> | 2018-08-17 13:05:35 +0300 |
commit | 502aabb9d0c5b65614baf4d7785681f154abd77c (patch) | |
tree | c4ef2b5b49be7e53c37b6d6e37b422fb916f130d /release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py | |
parent | b19b708728d6b7ddd6d4a5c656a7fb1da2311195 (diff) |
Physics Rigid Body: Use Single Column and Grid Flow layout
(and Rigid Body Constraint)
See D3613
Diffstat (limited to 'release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py')
-rw-r--r-- | release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py | 595 |
1 files changed, 410 insertions, 185 deletions
diff --git a/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py b/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py index 5e67caadc90..2c2d92be372 100644 --- a/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py +++ b/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py @@ -17,8 +17,11 @@ # ##### END GPL LICENSE BLOCK ##### # <pep8 compliant> + import bpy -from bpy.types import Panel +from bpy.types import ( + Panel, +) class PHYSICS_PT_rigidbody_constraint_panel: @@ -38,236 +41,458 @@ class PHYSICS_PT_rigid_body_constraint(PHYSICS_PT_rigidbody_constraint_panel, Pa def draw(self, context): layout = self.layout + layout.use_property_split = True ob = context.object rbc = ob.rigid_body_constraint layout.prop(rbc, "type") - row = layout.row() - row.prop(rbc, "enabled") - row.prop(rbc, "disable_collisions") - layout.prop(rbc, "object1") - layout.prop(rbc, "object2") +class PHYSICS_PT_rigid_body_constraint_settings(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Settings" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + return (ob and ob.rigid_body_constraint and context.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=True) + + ob = context.object + rbc = ob.rigid_body_constraint + + col = flow.column() + col.prop(rbc, "enabled") + col.prop(rbc, "disable_collisions") if rbc.type != 'MOTOR': - row = layout.row() - row.prop(rbc, "use_breaking") - sub = row.row() + col = flow.column() + col.prop(rbc, "use_breaking") + + sub = col.column() sub.active = rbc.use_breaking sub.prop(rbc, "breaking_threshold", text="Threshold") - row = layout.row() - row.prop(rbc, "use_override_solver_iterations", text="Override Iterations") - sub = row.row() - sub.active = rbc.use_override_solver_iterations - sub.prop(rbc, "solver_iterations", text="Iterations") - if rbc.type == 'HINGE': - col = layout.column(align=True) - col.label("Limits:") - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_limit_ang_z", toggle=True) - sub = row.row(align=True) - sub.active = rbc.use_limit_ang_z - sub.prop(rbc, "limit_ang_z_lower", text="Lower") - sub.prop(rbc, "limit_ang_z_upper", text="Upper") +class PHYSICS_PT_rigid_body_constraint_objects(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Objects" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} - elif rbc.type == 'SLIDER': - col = layout.column(align=True) - col.label("Limits:") + @classmethod + def poll(cls, context): + ob = context.object + return (ob and ob.rigid_body_constraint and context.engine in cls.COMPAT_ENGINES) - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_limit_lin_x", toggle=True) - sub = row.row(align=True) - sub.active = rbc.use_limit_lin_x - sub.prop(rbc, "limit_lin_x_lower", text="Lower") - sub.prop(rbc, "limit_lin_x_upper", text="Upper") + def draw(self, context): + layout = self.layout + layout.use_property_split = True - elif rbc.type == 'PISTON': - col = layout.column(align=True) - col.label("Limits:") - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_limit_lin_x", toggle=True) - sub = row.row(align=True) - sub.active = rbc.use_limit_lin_x - sub.prop(rbc, "limit_lin_x_lower", text="Lower") - sub.prop(rbc, "limit_lin_x_upper", text="Upper") + ob = context.object + rbc = ob.rigid_body_constraint - col = layout.column(align=True) + layout.prop(rbc, "object1", text="First") + layout.prop(rbc, "object2", text="Second") - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_limit_ang_x", toggle=True) - sub = row.row(align=True) - sub.active = rbc.use_limit_ang_x - sub.prop(rbc, "limit_ang_x_lower", text="Lower") - sub.prop(rbc, "limit_ang_x_upper", text="Upper") - elif rbc.type == 'MOTOR': - col = layout.column(align=True) - col.label("Linear motor:") - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_motor_lin", toggle=True, text="Enable") - sub = row.row(align=True) - sub.active = rbc.use_motor_lin - sub.prop(rbc, "motor_lin_target_velocity", text="Target Velocity") - sub.prop(rbc, "motor_lin_max_impulse", text="Max Impulse") - - col.label("Angular motor:") - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_motor_ang", toggle=True, text="Enable") - sub = row.row(align=True) - sub.active = rbc.use_motor_ang - sub.prop(rbc, "motor_ang_target_velocity", text="Target Velocity") - sub.prop(rbc, "motor_ang_max_impulse", text="Max Impulse") +class PHYSICS_PT_rigid_body_constraint_override_iterations(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Override Iterations" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + return (ob and ob.rigid_body_constraint and context.engine in cls.COMPAT_ENGINES) + + def draw_header(self, context): + ob = context.object + rbc = ob.rigid_body_constraint + self.layout.row().prop(rbc, "use_override_solver_iterations", text="") + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + + ob = context.object + rbc = ob.rigid_body_constraint + + layout.active = rbc.use_override_solver_iterations + layout.prop(rbc, "solver_iterations", text="Iterations") + + +class PHYSICS_PT_rigid_body_constraint_limits(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Limits" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + rbc = ob.rigid_body_constraint + + return (ob and rbc and (rbc.type in {'GENERIC', 'GENERIC_SPRING', 'HINGE', 'SLIDER', 'PISTON'}) + and context.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + return # do nothing. + + +class PHYSICS_PT_rigid_body_constraint_limits_linear(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Linear" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_limits' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + rbc = ob.rigid_body_constraint + + return (ob and rbc + and (rbc.type in {'GENERIC', 'GENERIC_SPRING', 'SLIDER', 'PISTON'}) + and context.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=True) + + ob = context.object + rbc = ob.rigid_body_constraint + + if rbc.type in {'PISTON', 'SLIDER'}: + col = flow.column() + col.prop(rbc, "use_limit_lin_x") + + sub = col.column(align=True) + sub.active = rbc.use_limit_lin_x + sub.prop(rbc, "limit_lin_x_lower", text="X Lower") + sub.prop(rbc, "limit_lin_x_upper", text="Upper") elif rbc.type in {'GENERIC', 'GENERIC_SPRING'}: - if rbc.type == 'GENERIC_SPRING': - row = layout.row() - row.label("Spring Type:") - row.prop(rbc, "spring_type", text="") - - col = layout.column(align=True) - col.label("Limits:") - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_limit_lin_x", toggle=True) - sub = row.row(align=True) + col = flow.column() + col.prop(rbc, "use_limit_lin_x") + + sub = col.column(align=True) sub.active = rbc.use_limit_lin_x - sub.prop(rbc, "limit_lin_x_lower", text="Lower") + sub.prop(rbc, "limit_lin_x_lower", text="X Lower") sub.prop(rbc, "limit_lin_x_upper", text="Upper") - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_limit_lin_y", toggle=True) - sub = row.row(align=True) + col = flow.column() + col.prop(rbc, "use_limit_lin_y") + + sub = col.column(align=True) sub.active = rbc.use_limit_lin_y - sub.prop(rbc, "limit_lin_y_lower", text="Lower") + sub.prop(rbc, "limit_lin_y_lower", text="Y Lower") sub.prop(rbc, "limit_lin_y_upper", text="Upper") - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_limit_lin_z", toggle=True) - sub = row.row(align=True) + col = flow.column() + col.prop(rbc, "use_limit_lin_z") + + sub = col.column(align=True) sub.active = rbc.use_limit_lin_z - sub.prop(rbc, "limit_lin_z_lower", text="Lower") + sub.prop(rbc, "limit_lin_z_lower", text="Z Lower") sub.prop(rbc, "limit_lin_z_upper", text="Upper") - col = layout.column(align=True) - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_limit_ang_x", toggle=True) - sub = row.row(align=True) +class PHYSICS_PT_rigid_body_constraint_limits_angular(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Angular" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_limits' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + rbc = ob.rigid_body_constraint + + return (ob and rbc + and (rbc.type in {'GENERIC_SPRING', 'HINGE', 'PISTON'}) + and context.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=True) + + ob = context.object + rbc = ob.rigid_body_constraint + + if rbc.type == 'HINGE': + col = flow.column() + col.prop(rbc, "use_limit_ang_z") + + sub = col.column(align=True) + sub.active = rbc.use_limit_ang_z + sub.prop(rbc, "limit_ang_z_lower", text="Z Lower") + sub.prop(rbc, "limit_ang_z_upper", text="Upper") + + elif rbc.type == 'PISTON': + col = flow.column() + col.prop(rbc, "use_limit_ang_x") + + sub = col.column(align=True) + sub.active = rbc.use_limit_ang_x + sub.prop(rbc, "limit_ang_x_lower", text="X Lower") + sub.prop(rbc, "limit_ang_x_upper", text="Upper") + + elif rbc.type == 'GENERIC_SPRING': + col = flow.column() + col.prop(rbc, "use_limit_ang_x") + + sub = col.column(align=True) sub.active = rbc.use_limit_ang_x - sub.prop(rbc, "limit_ang_x_lower", text="Lower") + sub.prop(rbc, "limit_ang_x_lower", text="X Lower") sub.prop(rbc, "limit_ang_x_upper", text="Upper") - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_limit_ang_y", toggle=True) - sub = row.row(align=True) + col = flow.column() + col.prop(rbc, "use_limit_ang_y") + + sub = col.column(align=True) sub.active = rbc.use_limit_ang_y - sub.prop(rbc, "limit_ang_y_lower", text="Lower") + sub.prop(rbc, "limit_ang_y_lower", text="Y Lower") sub.prop(rbc, "limit_ang_y_upper", text="Upper") - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_limit_ang_z", toggle=True) - sub = row.row(align=True) + col = flow.column() + col.prop(rbc, "use_limit_ang_z") + + sub = col.column(align=True) sub.active = rbc.use_limit_ang_z - sub.prop(rbc, "limit_ang_z_lower", text="Lower") + sub.prop(rbc, "limit_ang_z_lower", text="Z Lower") sub.prop(rbc, "limit_ang_z_upper", text="Upper") - if rbc.type == 'GENERIC_SPRING': - col = layout.column(align=True) - col.label("Springs:") - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_spring_x", toggle=True, text="X Axis") - sub = row.row(align=True) - sub.active = rbc.use_spring_x - sub.prop(rbc, "spring_stiffness_x", text="Stiffness") - sub.prop(rbc, "spring_damping_x", text="Damping") - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_spring_y", toggle=True, text="Y Axis") - sub = row.row(align=True) - sub.active = rbc.use_spring_y - sub.prop(rbc, "spring_stiffness_y", text="Stiffness") - sub.prop(rbc, "spring_damping_y", text="Damping") - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_spring_z", toggle=True, text="Z Axis") - sub = row.row(align=True) - sub.active = rbc.use_spring_z - sub.prop(rbc, "spring_stiffness_z", text="Stiffness") - sub.prop(rbc, "spring_damping_z", text="Damping") - - col = layout.column(align=True) - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_spring_ang_x", toggle=True, text="X Angle") - sub = row.row(align=True) - sub.active = rbc.use_spring_ang_x - sub.prop(rbc, "spring_stiffness_ang_x", text="Stiffness") - sub.prop(rbc, "spring_damping_ang_x", text="Damping") - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_spring_ang_y", toggle=True, text="Y Angle") - sub = row.row(align=True) - sub.active = rbc.use_spring_ang_y - sub.prop(rbc, "spring_stiffness_ang_y", text="Stiffness") - sub.prop(rbc, "spring_damping_ang_y", text="Damping") - - row = col.row(align=True) - sub = row.row(align=True) - sub.scale_x = 0.5 - sub.prop(rbc, "use_spring_ang_z", toggle=True, text="Z Angle") - sub = row.row(align=True) - sub.active = rbc.use_spring_ang_z - sub.prop(rbc, "spring_stiffness_ang_z", text="Stiffness") - sub.prop(rbc, "spring_damping_ang_z", text="Damping") + +class PHYSICS_PT_rigid_body_constraint_motor(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Motor" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + rbc = ob.rigid_body_constraint + + return (ob and rbc and rbc.type == 'MOTOR' + and context.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + return # do nothing. + + +class PHYSICS_PT_rigid_body_constraint_motor_angular(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Angular" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_motor' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + rbc = ob.rigid_body_constraint + + return (ob and rbc and rbc.type == 'MOTOR' + and context.engine in cls.COMPAT_ENGINES) + + def draw_header(self, context): + ob = context.object + rbc = ob.rigid_body_constraint + + self.layout.row().prop(rbc, "use_motor_ang", text="") + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=True) + + ob = context.object + rbc = ob.rigid_body_constraint + + flow.active = rbc.use_motor_ang + + col = flow.column(align=True) + col.prop(rbc, "motor_ang_target_velocity", text="Target Velocity") + + col = flow.column(align=True) + col.prop(rbc, "motor_ang_max_impulse", text="Max Impulse") + + +class PHYSICS_PT_rigid_body_constraint_motor_linear(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Linear" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_motor' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + rbc = ob.rigid_body_constraint + + return (ob and rbc and rbc.type == 'MOTOR' + and context.engine in cls.COMPAT_ENGINES) + + def draw_header(self, context): + ob = context.object + rbc = ob.rigid_body_constraint + + self.layout.row().prop(rbc, "use_motor_lin", text="") + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=True) + + ob = context.object + rbc = ob.rigid_body_constraint + + flow.active = rbc.use_motor_lin + + col = flow.column(align=True) + col.prop(rbc, "motor_lin_target_velocity", text="Target Velocity") + + col = flow.column(align=True) + col.prop(rbc, "motor_lin_max_impulse", text="Max Impulse") + + +class PHYSICS_PT_rigid_body_constraint_springs(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Springs" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + rbc = ob.rigid_body_constraint + + return (ob and ob.rigid_body_constraint + and rbc.type in {'GENERIC_SPRING'} + and context.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + + ob = context.object + rbc = ob.rigid_body_constraint + + layout.prop(rbc, "spring_type", text="Type") + + +class PHYSICS_PT_rigid_body_constraint_springs_angular(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Angular" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_springs' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + rbc = ob.rigid_body_constraint + + return (ob and ob.rigid_body_constraint + and rbc.type in {'GENERIC_SPRING'} + and context.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + + ob = context.object + rbc = ob.rigid_body_constraint + + flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=True) + + col = flow.column() + col.prop(rbc, "use_spring_ang_x", text="X Angle") + + sub = col.column(align=True) + sub.active = rbc.use_spring_ang_x + sub.prop(rbc, "spring_stiffness_ang_x", text="X Stiffness") + sub.prop(rbc, "spring_damping_ang_x", text="Damping") + + col = flow.column() + col.prop(rbc, "use_spring_ang_y", text="Y Angle") + + sub = col.column(align=True) + sub.active = rbc.use_spring_ang_y + sub.prop(rbc, "spring_stiffness_ang_y", text="Y Stiffness") + sub.prop(rbc, "spring_damping_ang_y", text="Damping") + + col = flow.column() + col.prop(rbc, "use_spring_ang_z", text="Z Angle") + + sub = col.column(align=True) + sub.active = rbc.use_spring_ang_z + sub.prop(rbc, "spring_stiffness_ang_z", text="Z Stiffness") + sub.prop(rbc, "spring_damping_ang_z", text="Damping") + + +class PHYSICS_PT_rigid_body_constraint_springs_linear(PHYSICS_PT_rigidbody_constraint_panel, Panel): + bl_label = "Linear" + bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_springs' + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'} + + @classmethod + def poll(cls, context): + ob = context.object + rbc = ob.rigid_body_constraint + + return (ob and ob.rigid_body_constraint + and rbc.type in {'GENERIC_SPRING'} + and context.engine in cls.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + + ob = context.object + rbc = ob.rigid_body_constraint + + flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=True) + + col = flow.column() + col.prop(rbc, "use_spring_x", text="X Axis") + + sub = col.column(align=True) + sub.active = rbc.use_spring_x + sub.prop(rbc, "spring_stiffness_x", text="X Stiffness") + sub.prop(rbc, "spring_damping_x", text="Damping") + + col = flow.column() + col.prop(rbc, "use_spring_y", text="Y Axis") + + sub = col.column(align=True) + sub.active = rbc.use_spring_y + sub.prop(rbc, "spring_stiffness_y", text="Stiffness") + sub.prop(rbc, "spring_damping_y", text="Damping") + + col = flow.column() + col.prop(rbc, "use_spring_z", text="Z Axis") + + sub = col.column(align=True) + sub.active = rbc.use_spring_z + sub.prop(rbc, "spring_stiffness_z", text="Stiffness") + sub.prop(rbc, "spring_damping_z", text="Damping") classes = ( PHYSICS_PT_rigid_body_constraint, + PHYSICS_PT_rigid_body_constraint_settings, + PHYSICS_PT_rigid_body_constraint_limits, + PHYSICS_PT_rigid_body_constraint_limits_angular, + PHYSICS_PT_rigid_body_constraint_limits_linear, + PHYSICS_PT_rigid_body_constraint_motor, + PHYSICS_PT_rigid_body_constraint_motor_angular, + PHYSICS_PT_rigid_body_constraint_motor_linear, + PHYSICS_PT_rigid_body_constraint_objects, + PHYSICS_PT_rigid_body_constraint_override_iterations, + PHYSICS_PT_rigid_body_constraint_springs, + PHYSICS_PT_rigid_body_constraint_springs_angular, + PHYSICS_PT_rigid_body_constraint_springs_linear, ) + if __name__ == "__main__": # only for live edit. from bpy.utils import register_class for cls in classes: |