Fix T99364: Unable to select bones when custom shape display is disabled
Regression in [0] which revealed an error in [1]. Logic for pose channel custom transform ignored ARM_NO_CUSTOM. [0]:3267c91b4d
[1]:c3fef001ee
This commit is contained in:
parent
03173d63c0
commit
b98a937db6
Notes:
blender-bot
2023-02-14 08:38:14 +01:00
Referenced by issue #99364, Regression: Unable to select bones with custom shape and custom shape transform override, while shape display is turned off Referenced by issue #98661, 3.2: Potential candidates for corrective releases
|
@ -2668,20 +2668,21 @@ void BKE_pchan_minmax(const Object *ob,
|
|||
float r_max[3])
|
||||
{
|
||||
const bArmature *arm = ob->data;
|
||||
const bPoseChannel *pchan_tx = (pchan->custom && pchan->custom_tx) ? pchan->custom_tx : pchan;
|
||||
Object *ob_custom = (arm->flag & ARM_NO_CUSTOM) ? NULL : pchan->custom;
|
||||
const bPoseChannel *pchan_tx = (ob_custom && pchan->custom_tx) ? pchan->custom_tx : pchan;
|
||||
const BoundBox *bb_custom = NULL;
|
||||
BoundBox bb_custom_buf;
|
||||
|
||||
if ((pchan->custom) && !(arm->flag & ARM_NO_CUSTOM)) {
|
||||
if (ob_custom) {
|
||||
float min[3], max[3];
|
||||
if (use_empty_drawtype && (pchan->custom->type == OB_EMPTY) &&
|
||||
BKE_object_minmax_empty_drawtype(pchan->custom, min, max)) {
|
||||
if (use_empty_drawtype && (ob_custom->type == OB_EMPTY) &&
|
||||
BKE_object_minmax_empty_drawtype(ob_custom, min, max)) {
|
||||
memset(&bb_custom_buf, 0x0, sizeof(bb_custom_buf));
|
||||
BKE_boundbox_init_from_minmax(&bb_custom_buf, min, max);
|
||||
bb_custom = &bb_custom_buf;
|
||||
}
|
||||
else {
|
||||
bb_custom = BKE_object_boundbox_get(pchan->custom);
|
||||
bb_custom = BKE_object_boundbox_get(ob_custom);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -251,12 +251,18 @@ typedef struct bPoseChannel {
|
|||
|
||||
/** Motion path cache for this bone. */
|
||||
bMotionPath *mpath;
|
||||
/** Draws custom object instead of default bone shape. */
|
||||
/**
|
||||
* Draws custom object instead of default bone shape.
|
||||
*
|
||||
* \note For the purpose of user interaction (selection, display etc),
|
||||
* it's important this value is treated as NULL when #ARM_NO_CUSTOM is set.
|
||||
*/
|
||||
struct Object *custom;
|
||||
/**
|
||||
* Odd feature, display with another bones transform.
|
||||
* needed in rare cases for advanced rigs,
|
||||
* since the alternative is highly complicated - campbell
|
||||
* This is a specific feature to display with another bones transform.
|
||||
* Needed in rare cases for advanced rigs, since alternative solutions are highly complicated.
|
||||
*
|
||||
* \note This depends #bPoseChannel.custom being set and the #ARM_NO_CUSTOM flag being unset.
|
||||
*/
|
||||
struct bPoseChannel *custom_tx;
|
||||
float custom_scale; /* Deprecated */
|
||||
|
|
Loading…
Reference in New Issue