fix bone select

This commit is contained in:
2025-12-05 17:59:06 +01:00
parent cc60a25aca
commit 465a22d5a9
5 changed files with 41 additions and 41 deletions
+4 -1
View File
@@ -2,12 +2,15 @@ import bpy
from .bl_utils import get_mat, get_collection_parents
def get_picker_collection(ob=None):
def get_picker_collection(ob: bpy.types.Object | None = None):
"""Return the picker collection of an object"""
if not ob:
ob = bpy.context.object
if not ob:
raise Exception("No object in context")
for col in ob.users_collection:
if col.rig_picker.enabled:
return col
+7 -25
View File
@@ -31,7 +31,6 @@ class Shape:
color=None,
source_name="",
):
self.type = "display"
self.picker = picker
self.rig = picker.rig
@@ -93,7 +92,6 @@ class Shape:
self._color = color
def draw(self):
# self.shader.bind()
self.shader.uniform_float("color", self.color)
@@ -196,7 +194,6 @@ class BoneShape(Shape):
return self.bone_colors["normal"]
def get_bone_colors(self):
theme = bpy.context.preferences.themes["Default"]
bone_colors = {
"select": [*theme.view_3d.bone_pose, 1],
@@ -294,7 +291,6 @@ class BoneShape(Shape):
gpu.state.line_width_set(1.0)
def assign_bone_event(self):
# print('assign_bone_event', self)
scn = bpy.context.scene
@@ -324,9 +320,8 @@ class BoneShape(Shape):
if mode == "SUBSTRACT":
select = False
self.bone.bone.select = select
self.rig.pose.bones.get(self.bone.bone.name).select = select
if self.hover:
if mode != "SUBSTRACT":
self.rig.data.bones.active = self.bone.bone
@@ -360,25 +355,13 @@ class BoneShape(Shape):
points = [self.points[i] for i in polygon]
if intersect_tri_tri_2d(*border_tri1, *points):
self.bone.bone.select = select
self.rig.pose.bones.get(self.bone.bone.name).select = select
return
if intersect_tri_tri_2d(*border_tri2, *points):
self.bone.bone.select = select
self.rig.pose.bones.get(self.bone.bone.name).select = select
return
"""
for b in border:
if intersect_point_tri_2d(b, *points):
self.bone.bone.select = select
return
for p in points:
if intersect_point_quad_2d(p, *border):
self.bone.bone.select = select
return
"""
class OperatorShape(Shape):
def __init__(
@@ -521,7 +504,6 @@ class Picker:
shape.press = False
def release_event(self, mode="SET"):
# bpy.ops.pose.select_all(action='DESELECT')
# print('PICKER release event', mode)
@@ -615,7 +597,6 @@ class Picker:
class PickerGroup:
def __init__(self, rig, pickers):
# self.view_location = Vector((0, 0))
self.region = bpy.context.region
self.rig = rig
@@ -696,7 +677,8 @@ class PickerGroup:
def release_event(self, mode="SET"):
if mode == "SET":
for bone in self.rig.data.bones:
print(list(self.rig.pose.bones))
for bone in self.rig.pose.bones:
bone.select = False
for picker in self.pickers:
@@ -715,7 +697,7 @@ class PickerGroup:
border = [self.region.view2d.region_to_view(*b) for b in border]
if mode == "SET":
for bone in self.rig.data.bones:
for bone in self.rig.pose.bones:
bone.select = False
for picker in self.pickers:
@@ -762,7 +744,7 @@ class PickerGroup:
return center
def load_picker_data(rig):
def load_picker_data(rig: bpy.types.Object):
if "pickers" in rig.data.rig_picker:
picker_datas = [
[s.to_dict() for s in p] for p in rig.data.rig_picker["pickers"]