Commit: 1996efe7aa2e0edc9887ad34bc59e2ab911e2d02 Author: Alexander Gavrilov Date: Fri Oct 1 15:30:12 2021 +0300 Branches: master https://developer.blender.org/rB1996efe7aa2e0edc9887ad34bc59e2ab911e2d02
Python API: implement `PoseBone.children` via `Bone.children`. Currently `PoseBone.children` is implemented by a linear scan of the list of armature bones. This is doubly inefficient, since not only is it scanning all bones, the `obj.data.bones` list is actually synthetic and generated from Bone children lists. Instead, use the `Bone.children` native RNA property. Differential Revision: https://developer.blender.org/D12727 =================================================================== M release/scripts/modules/bpy_types.py =================================================================== diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 8a1615ad99f..26efb6e3307 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -378,10 +378,9 @@ class PoseBone(StructRNA, _GenericBone, metaclass=StructMetaPropGroup): def children(self): obj = self.id_data pbones = obj.pose.bones - self_bone = self.bone - return tuple(pbones[bone.name] for bone in obj.data.bones - if bone.parent == self_bone) + # Use Bone.children, which is a native RNA property. + return tuple(pbones[bone.name] for bone in self.bone.children) class Bone(StructRNA, _GenericBone, metaclass=StructMetaPropGroup): _______________________________________________ Bf-blender-cvs mailing list [email protected] List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs
