27 bool is_object_active)
42 const float *head_vec =
nullptr, *tail_vec =
nullptr;
44 const bool is_editmode = arm->
edbo !=
nullptr;
46 const bool skip_selected = (is_editmode || is_posemode) &&
54 if (is_selected && skip_selected) {
58 if (nearest2d.
snap_edge(eBone->head, eBone->tail)) {
59 head_vec = eBone->head;
60 tail_vec = eBone->tail;
67 Bone *bone = pchan->bone;
74 if (is_selected && skip_selected) {
78 if (nearest2d.
snap_edge(pchan->pose_head, pchan->pose_tail)) {
79 head_vec = pchan->pose_head;
80 tail_vec = pchan->pose_tail;
Functions to deal with Armatures.
#define LISTBASE_FOREACH(type, var, list)
@ SCE_SNAP_TARGET_NOT_SELECTED
@ SCE_SNAP_TO_EDGE_ENDPOINT
bool bone_is_visible_editbone(const bArmature *armature, const EditBone *ebone)
bool bone_is_visible_pchan(const bArmature *armature, const bPoseChannel *pchan)
MatBase< float, 4, 4 > float4x4
struct blender::ed::transform::SnapObjectContext::@023363036215051051114130033143317235151004224004 runtime
struct blender::ed::transform::SnapObjectContext::@252151137362251112213357331153135115250002101241 ret