Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/screen/screen_context.c
| Show First 20 Lines • Show All 287 Lines • ▼ Show 20 Lines | else if (CTX_data_equals(member, "selected_bones") || CTX_data_equals(member, "selected_editable_bones")) { | ||||
| } | } | ||||
| } | } | ||||
| else if (CTX_data_equals(member, "visible_pose_bones")) { | else if (CTX_data_equals(member, "visible_pose_bones")) { | ||||
| Object *obpose = BKE_object_pose_armature_get(obact); | Object *obpose = BKE_object_pose_armature_get(obact); | ||||
| bArmature *arm = (obpose) ? obpose->data : NULL; | bArmature *arm = (obpose) ? obpose->data : NULL; | ||||
| bPoseChannel *pchan; | bPoseChannel *pchan; | ||||
| if (obpose && obpose->pose && arm) { | if (obpose && obpose->pose && arm) { | ||||
| if (obpose != obact) { | |||||
| for (pchan = obpose->pose->chanbase.first; pchan; pchan = pchan->next) { | for (pchan = obpose->pose->chanbase.first; pchan; pchan = pchan->next) { | ||||
| /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ | /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ | ||||
| if (PBONE_VISIBLE(arm, pchan->bone)) { | if (PBONE_VISIBLE(arm, pchan->bone)) { | ||||
| CTX_data_list_add(result, &obpose->id, &RNA_PoseBone, pchan); | CTX_data_list_add(result, &obpose->id, &RNA_PoseBone, pchan); | ||||
| } | } | ||||
| } | } | ||||
| } | |||||
| else if (obact->mode & OB_MODE_POSE) { | |||||
| FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, obact->mode, ob_iter) { | |||||
| for (pchan = ob_iter->pose->chanbase.first; pchan; pchan = pchan->next) { | |||||
| /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ | |||||
| if (PBONE_VISIBLE(arm, pchan->bone)) { | |||||
| CTX_data_list_add(result, &ob_iter->id, &RNA_PoseBone, pchan); | |||||
| } | |||||
| } | |||||
| } FOREACH_OBJECT_IN_MODE_END; | |||||
| } | |||||
| CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); | CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| } | } | ||||
| else if (CTX_data_equals(member, "selected_pose_bones")) { | else if (CTX_data_equals(member, "selected_pose_bones")) { | ||||
| Object *obpose = BKE_object_pose_armature_get(obact); | Object *obpose = BKE_object_pose_armature_get(obact); | ||||
| bArmature *arm = (obpose) ? obpose->data : NULL; | bArmature *arm = (obpose) ? obpose->data : NULL; | ||||
| bPoseChannel *pchan; | bPoseChannel *pchan; | ||||
| if (obpose && obpose->pose && arm) { | if (obpose && obpose->pose && arm) { | ||||
| if (obpose != obact) { | |||||
| /* TODO(de-duplicate!) */ | |||||
| for (pchan = obpose->pose->chanbase.first; pchan; pchan = pchan->next) { | for (pchan = obpose->pose->chanbase.first; pchan; pchan = pchan->next) { | ||||
| /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ | /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ | ||||
| if (PBONE_VISIBLE(arm, pchan->bone)) { | if (PBONE_VISIBLE(arm, pchan->bone)) { | ||||
| if (pchan->bone->flag & BONE_SELECTED) | if (pchan->bone->flag & BONE_SELECTED) | ||||
| CTX_data_list_add(result, &obpose->id, &RNA_PoseBone, pchan); | CTX_data_list_add(result, &obpose->id, &RNA_PoseBone, pchan); | ||||
| } | } | ||||
| } | } | ||||
| } | |||||
| else if (obact->mode & OB_MODE_POSE) { | |||||
| /* TODO(de-duplicate!) */ | |||||
| FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, OB_MODE_POSE, ob_iter) { | |||||
| for (pchan = ob_iter->pose->chanbase.first; pchan; pchan = pchan->next) { | |||||
| /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ | |||||
| if (PBONE_VISIBLE(arm, pchan->bone)) { | |||||
| if (pchan->bone->flag & BONE_SELECTED) | |||||
| CTX_data_list_add(result, &ob_iter->id, &RNA_PoseBone, pchan); | |||||
| } | |||||
| } | |||||
| } FOREACH_OBJECT_IN_MODE_END; | |||||
| } | |||||
| CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); | CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| } | } | ||||
| else if (CTX_data_equals(member, "active_bone")) { | else if (CTX_data_equals(member, "active_bone")) { | ||||
| if (obact && obact->type == OB_ARMATURE) { | if (obact && obact->type == OB_ARMATURE) { | ||||
| bArmature *arm = obact->data; | bArmature *arm = obact->data; | ||||
| if (arm->edbo) { | if (arm->edbo) { | ||||
| ▲ Show 20 Lines • Show All 318 Lines • Show Last 20 Lines | |||||