From 47e8b978af6b75965fc6ba86819ddbd6c1a15ef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Fri, 4 Apr 2025 18:38:07 -0300 Subject: [PATCH] Snap - filter visible objects before creating the 2d bouding box --- src/bonsai/bonsai/tool/raycast.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/bonsai/bonsai/tool/raycast.py b/src/bonsai/bonsai/tool/raycast.py index 5cea172dc0..47997562b3 100644 --- a/src/bonsai/bonsai/tool/raycast.py +++ b/src/bonsai/bonsai/tool/raycast.py @@ -52,7 +52,14 @@ class Raycast(bonsai.core.tool.Raycast): else: # Usual object obj = dup.object all_objs.append(obj) - return all_objs + + visible_objs = [] + for obj in all_objs: + if obj.type in {"MESH", "EMPTY", "CURVE"} and ( + obj.visible_in_viewport_get(bpy.context.space_data) or obj.library + ): # Check for local view and local collections for this viewport and object + visible_objs.append(obj) + return visible_objs @classmethod def get_on_screen_2d_bounding_boxes(cls, context: bpy.types.Context, obj: bpy.types.Object): @@ -386,12 +393,9 @@ class Raycast(bonsai.core.tool.Raycast): mouse_pos = event.mouse_region_x, event.mouse_region_y objs_to_raycast = [] for obj, bbox_2d in objs_2d_bbox: - if obj.type in {"MESH", "EMPTY", "CURVE"} and bbox_2d: + if bbox_2d: if tool.Raycast.intersect_mouse_2d_bounding_box(mouse_pos, bbox_2d): - if ( - obj.visible_in_viewport_get(bpy.context.space_data) or obj.library - ): # Check for local view and local collections for this viewport and object - objs_to_raycast.append(obj) + objs_to_raycast.append(obj) return objs_to_raycast @classmethod