Constraints: add checks to specially handle the custom space target.
- The custom space target never needs B-Bone data (used by depsgraph). - When drawing the relationship lines use the space matrix directly. - Don't use the custom target to control the target space type dropdown. Differential Revision: https://developer.blender.org/D9732
This commit is contained in:
@@ -5844,9 +5844,12 @@ static bConstraint *add_new_constraint(Object *ob,
|
||||
return con;
|
||||
}
|
||||
|
||||
bool BKE_constraint_target_uses_bbone(struct bConstraint *con,
|
||||
struct bConstraintTarget *UNUSED(ct))
|
||||
bool BKE_constraint_target_uses_bbone(struct bConstraint *con, struct bConstraintTarget *ct)
|
||||
{
|
||||
if (ct->flag & CONSTRAINT_TAR_CUSTOM_SPACE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (con->flag & CONSTRAINT_BBONE_SHAPE) || (con->type == CONSTRAINT_TYPE_ARMATURE);
|
||||
}
|
||||
|
||||
|
||||
@@ -1319,7 +1319,10 @@ static void OVERLAY_relationship_lines(OVERLAY_ExtraCallBuffers *cb,
|
||||
|
||||
for (ct = targets.first; ct; ct = ct->next) {
|
||||
/* calculate target's matrix */
|
||||
if (cti->get_target_matrix) {
|
||||
if (ct->flag & CONSTRAINT_TAR_CUSTOM_SPACE) {
|
||||
copy_m4_m4(ct->matrix, cob->space_obj_world_matrix);
|
||||
}
|
||||
else if (cti->get_target_matrix) {
|
||||
cti->get_target_matrix(depsgraph, curcon, cob, ct, DEG_get_ctime(depsgraph));
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -603,7 +603,7 @@ static const EnumPropertyItem *rna_Constraint_target_space_itemf(bContext *UNUSE
|
||||
|
||||
if (BKE_constraint_targets_get(con, &targets)) {
|
||||
for (ct = targets.first; ct; ct = ct->next) {
|
||||
if (ct->tar && ct->tar->type == OB_ARMATURE) {
|
||||
if (ct->tar && ct->tar->type == OB_ARMATURE && !(ct->flag & CONSTRAINT_TAR_CUSTOM_SPACE)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user