From 221e82c89b70e962dadaaad86e5648cf9c4f01b0 Mon Sep 17 00:00:00 2001 From: Adam Mechtley Date: Wed, 11 Feb 2026 19:02:54 +0100 Subject: [PATCH 1/5] Add PyCharm and macOS patterns to .gitignore --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index f717486..7156f39 100644 --- a/.gitignore +++ b/.gitignore @@ -113,6 +113,9 @@ venv.bak/ # Rope project settings .ropeproject +# PyCharm project settings +.idea + # mkdocs documentation /site @@ -123,3 +126,6 @@ dmypy.json # Pyre type checker .pyre/ + +# operating system files +.DS_Store From f948121bf4e4e3d52a47e17148bbbf4fdb8c6d96 Mon Sep 17 00:00:00 2001 From: Adam Mechtley Date: Wed, 11 Feb 2026 19:03:14 +0100 Subject: [PATCH 2/5] Fix missing min validation on suffix digits preference The collision_digits property lacked a minimum value constraint, which could allow negative values and cause the UI to stop displaying. --- preferences/prefs_properties.py | 1 + 1 file changed, 1 insertion(+) diff --git a/preferences/prefs_properties.py b/preferences/prefs_properties.py index b48bef5..40cc7a3 100644 --- a/preferences/prefs_properties.py +++ b/preferences/prefs_properties.py @@ -198,6 +198,7 @@ class CollisionAddonPrefsProperties(): name="Suffix Digits", description="Defines the number of digits used for numerating.", default=3, + min=0, ) # Collider Shapes From 29387fb02bb77976cbc5b2ec3cad5a5f1d3984a1 Mon Sep 17 00:00:00 2001 From: Adam Mechtley Date: Wed, 11 Feb 2026 19:03:36 +0100 Subject: [PATCH 3/5] Fix broken links and incorrect operator references in UI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix double-h typo in documentation URL (hhttps → https) - Fix preferences button referencing wrong addon (simple_camera → simple_collider) - Fix preferences tab name (GENERAL → SETTINGS) - Fix help link on Collider Groups panel pointing to overview instead of groups page --- ui/properties_panels.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ui/properties_panels.py b/ui/properties_panels.py index 407182c..75fd7e0 100644 --- a/ui/properties_panels.py +++ b/ui/properties_panels.py @@ -415,13 +415,13 @@ def draw_header(self, context): # Open documentation layout = self.layout row = layout.row(align=True) - row.operator("wm.url_open", text="", icon='HELP').url = "hhttps://weisl.github.io/collider_overview/" + row.operator("wm.url_open", text="", icon='HELP').url = "https://weisl.github.io/collider_overview/" # Open Preferences addon_name = get_addon_name() - op = row.operator("simple_camera.open_preferences", text="", icon='PREFERENCES') + op = row.operator("simple_collider.open_preferences", text="", icon='PREFERENCES') op.addon_name = addon_name - op.prefs_tabs = 'GENERAL' + op.prefs_tabs = 'SETTINGS' # Open Export Popup op = row.operator("wm.call_menu_pie", text="", icon="WINDOW") @@ -467,7 +467,7 @@ def draw_header(self, context): layout = self.layout row = layout.row(align=True) row.operator('view.collider_view_object', icon='HIDE_OFF', text='Collider Groups') - row.operator("wm.url_open", text="", icon='HELP').url = "https://weisl.github.io/collider_overview/" + row.operator("wm.url_open", text="", icon='HELP').url = "https://weisl.github.io/collider_groups/" def draw(self, context): layout = self.layout From 8d39a751477a29738bfd2649cd4644d5b43a5145 Mon Sep 17 00:00:00 2001 From: Adam Mechtley Date: Wed, 11 Feb 2026 19:04:06 +0100 Subject: [PATCH 4/5] Fix typos in UI strings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix "Auto Conevx" → "Auto Convex" and "MacOS" → "this platform" - Fix "Volumne" → "Volume" in VHACD error percentage label - Fix "Create a triangle mesh" → "Create triangle mesh" (extraneous article) - Fix "sphere segments" → "capsule segments" in capsule property description --- collider_shapes/add_collision_remesh.py | 2 +- preferences/preferences.py | 2 +- preferences/prefs_properties.py | 2 +- properties/properties.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/collider_shapes/add_collision_remesh.py b/collider_shapes/add_collision_remesh.py index 4e56ccf..ae1d789 100644 --- a/collider_shapes/add_collision_remesh.py +++ b/collider_shapes/add_collision_remesh.py @@ -9,7 +9,7 @@ class OBJECT_OT_add_remesh_collision(OBJECT_OT_add_bounding_object, Operator): """Create a new bounding box object""" bl_idname = "mesh.add_remesh_collision" bl_label = "Add Re-meshed" - bl_description = 'Create a triangle mesh colliders based on the voxel re-meshed target' + bl_description = 'Create triangle mesh colliders based on the voxel re-meshed target' def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/preferences/preferences.py b/preferences/preferences.py index 081b2d6..e9f3bb3 100644 --- a/preferences/preferences.py +++ b/preferences/preferences.py @@ -312,7 +312,7 @@ def draw_vhacd_panel(self, layout, context): box.label(text="You can also use a custom build of vhacd compiled for your Linux distribution.") else: - box.label(text="Auto Conevx is currently not supported on MacOS", icon='ERROR') + box.label(text="Auto Convex is currently not supported on this platform", icon='ERROR') diff --git a/preferences/prefs_properties.py b/preferences/prefs_properties.py index 40cc7a3..ce8f4bd 100644 --- a/preferences/prefs_properties.py +++ b/preferences/prefs_properties.py @@ -380,7 +380,7 @@ class CollisionAddonPrefsProperties(): # VHACD parameters # -e - vhacd_volumneErrorPercent: bpy.props.FloatProperty(name='Volumne Error Percentage', + vhacd_volumneErrorPercent: bpy.props.FloatProperty(name='Volume Error Percentage', description=' Volume error allowed as a percentage. Default is 1%. Valid range is 0.001 to 10', default=0.01, min=0.001, diff --git a/properties/properties.py b/properties/properties.py index ff38295..60b08b6 100644 --- a/properties/properties.py +++ b/properties/properties.py @@ -150,7 +150,7 @@ class ColliderTools_Properties(bpy.types.PropertyGroup): ) default_capsule_segments: bpy.props.IntProperty(name="Capsule Segments", - description="Amount of sphere segments.", + description="Amount of capsule segments.", default=16, ) From 7a77aec53138c1ed357c13b11a394b2233f87ca2 Mon Sep 17 00:00:00 2001 From: Adam Mechtley Date: Wed, 11 Feb 2026 19:04:54 +0100 Subject: [PATCH 5/5] Fix incorrect docstrings, tooltips, and property descriptions - Replace wrong/placeholder class docstrings (e.g., "Tooltip", "bounding box" on sphere/mesh, "Select/Deselect" on assign operators, "Print object name in Console" on auto convex) - Add missing bl_description on operators that lacked explicit tooltips - Fix three copy-paste property descriptions that all incorrectly referenced "modifier stack" instead of their actual functionality Co-Authored-By: Claude Opus 4.6 --- collider_conversion/convert_from_name.py | 2 +- collider_conversion/convert_to_shape.py | 2 +- collider_operators/utility_operators.py | 4 ++++ collider_shapes/add_bounding_sphere.py | 2 +- collider_shapes/add_collision_mesh.py | 2 +- groups/user_groups.py | 2 +- properties/properties.py | 6 +++--- rigid_body/rigid_body.py | 2 +- ui/properties_panels.py | 5 +++-- 9 files changed, 16 insertions(+), 11 deletions(-) diff --git a/collider_conversion/convert_from_name.py b/collider_conversion/convert_from_name.py index fe75456..04d9dfc 100644 --- a/collider_conversion/convert_from_name.py +++ b/collider_conversion/convert_from_name.py @@ -10,7 +10,7 @@ class OBJECT_OT_convert_from_name(Operator): - """Convert selected colliders to mesh objects""" + """Assign collider attributes from the object naming""" bl_idname = "object.convert_from_name" bl_label = "Collider from Naming" bl_description = 'Assign collider attributes from the object naming.' diff --git a/collider_conversion/convert_to_shape.py b/collider_conversion/convert_to_shape.py index f193a23..6f0d3c6 100644 --- a/collider_conversion/convert_to_shape.py +++ b/collider_conversion/convert_to_shape.py @@ -4,7 +4,7 @@ from ..collider_shapes.add_bounding_primitive import OBJECT_OT_add_bounding_object class COLLISION_OT_assign_shape(bpy.types.Operator): - """Select/Deselect collision objects""" + """Reassign the collider shape type on selected colliders, updating their names to match""" bl_idname = "object.assign_collider_shape" bl_label = "Assign Collider Shape" bl_description = 'Assign shape to a collider' diff --git a/collider_operators/utility_operators.py b/collider_operators/utility_operators.py index f6b1d4c..6e857cf 100644 --- a/collider_operators/utility_operators.py +++ b/collider_operators/utility_operators.py @@ -9,6 +9,7 @@ class COLLISION_OT_adjust_decimation(bpy.types.Operator): """Adjust Decimation to Target Triangle Count""" bl_idname = "object.adjust_decimation" bl_label = "Limit Tris Count" + bl_description = "Adjust the decimation modifier to reach a target triangle count" bl_options = {'REGISTER', 'UNDO'} target_triangles: IntProperty( @@ -65,6 +66,7 @@ class COLLISION_OT_MoveOriginToParentOperator(bpy.types.Operator): """Apply Parent Transform to Child""" bl_idname = "object.origin_to_parent" bl_label = "Move Origin to Parent" + bl_description = "Move the collider origin to match its parent object's position" bl_options = {'REGISTER', 'UNDO'} @classmethod @@ -210,8 +212,10 @@ def fix_inverse_matrix(obj): class COLLISION_OT_FixColliderTransform(bpy.types.Operator): + """Fix the parent inverse matrix on selected colliders""" bl_idname = "object.fix_parent_inverse_transform" bl_label = "Fix Parent Inverse Matrix" + bl_description = "Reset the parent inverse matrix and bake the transform into mesh data" bl_options = {'REGISTER', 'UNDO'} @classmethod diff --git a/collider_shapes/add_bounding_sphere.py b/collider_shapes/add_bounding_sphere.py index 0aa1695..e1f522f 100644 --- a/collider_shapes/add_bounding_sphere.py +++ b/collider_shapes/add_bounding_sphere.py @@ -51,7 +51,7 @@ def create_sphere(pos, diameter, segments): class OBJECT_OT_add_bounding_sphere(OBJECT_OT_add_bounding_object, Operator): - """Create a new bounding box object""" + """Create spherical colliders based on the selection""" bl_idname = "mesh.add_bounding_sphere" bl_label = "Add Sphere" bl_description = 'Create spherical colliders based on the selection' diff --git a/collider_shapes/add_collision_mesh.py b/collider_shapes/add_collision_mesh.py index f9d5b97..ceb7d0a 100644 --- a/collider_shapes/add_collision_mesh.py +++ b/collider_shapes/add_collision_mesh.py @@ -6,7 +6,7 @@ class OBJECT_OT_add_mesh_collision(OBJECT_OT_add_bounding_object, Operator): - """Create a new bounding box object""" + """Create triangle mesh colliders based on the selection""" bl_idname = "mesh.add_mesh_collision" bl_label = "Add Mesh" bl_description = 'Create triangle mesh colliders based on the selection' diff --git a/groups/user_groups.py b/groups/user_groups.py index d07bd41..74eb108 100644 --- a/groups/user_groups.py +++ b/groups/user_groups.py @@ -176,7 +176,7 @@ def set_object_color(obj, color): class COLLISION_OT_assign_user_group(bpy.types.Operator): - """Select/Deselect collision objects""" + """Assign User Group to selected colliders""" bl_idname = "object.assign_user_group" bl_label = "Assign User Group" bl_description = 'Assign User Group to collider' diff --git a/properties/properties.py b/properties/properties.py index 60b08b6..359c676 100644 --- a/properties/properties.py +++ b/properties/properties.py @@ -92,16 +92,16 @@ class ColliderTools_Properties(bpy.types.PropertyGroup): default_use_loose_island: bpy.props.BoolProperty(name="Use Loose Islands", default=False, - description="Set the default for using the modifier stack or not when creating colliders.") + description="Set the default for generating separate colliders for each island of geometry in the source object.") default_join_primitives: bpy.props.BoolProperty(name="Join Primitives", default=False, - description="Set the default for using the modifier stack or not when creating colliders.") + description="Set the default for joining all generated colliders into a single object after creation.") default_keep_original_material: bpy.props.BoolProperty(name="Keep Original Materials", default=False, - description="Set the default for using the modifier stack or not when creating colliders.") + description="Set the default for keeping the source object's materials on the collider instead of assigning a physics material.") default_keep_original_name: bpy.props.BoolProperty(name="Keep Original Name", default=False, diff --git a/rigid_body/rigid_body.py b/rigid_body/rigid_body.py index b2a72f4..043904c 100644 --- a/rigid_body/rigid_body.py +++ b/rigid_body/rigid_body.py @@ -4,7 +4,7 @@ class OBJECT_OT_make_rigid_body(bpy.types.Operator): - """Tooltip""" + """Convert object to be a rigid body""" bl_idname = "object.set_rigid_body" bl_label = "Set Rigid Body" bl_description = 'Convert object to be a rigid body' diff --git a/ui/properties_panels.py b/ui/properties_panels.py index 75fd7e0..d0f1ab0 100644 --- a/ui/properties_panels.py +++ b/ui/properties_panels.py @@ -342,7 +342,7 @@ def execute(self, context): class PREFERENCES_OT_open_addon(bpy.types.Operator): - """Tooltip""" + """Open the addon preferences panel""" bl_idname = "simple_collider.open_preferences" bl_label = "Open Addon preferences" @@ -642,9 +642,10 @@ def draw(self, context): class BUTTON_OT_auto_convex(bpy.types.Operator): - """Print object name in Console""" + """Create convex hull colliders based on the voxel decomposition target""" bl_idname = "button.auto_convex" bl_label = "Auto Convex" + bl_description = 'Create convex hull colliders based on the voxel decomposition target' @classmethod def poll(cls, context):