Blender V4.3
ED_armature.hh File Reference
#include "BLI_compiler_attrs.h"
#include "BLI_listbase.h"
#include "BLI_span.hh"

Go to the source code of this file.

Macros

#define BONESEL_ROOT   (1u << 29)
 
#define BONESEL_TIP   (1u << 30)
 
#define BONESEL_BONE   (1u << 31)
 
#define BONESEL_ANY   (BONESEL_TIP | BONESEL_ROOT | BONESEL_BONE)
 
#define EBONE_VISIBLE(arm, ebone)   ANIM_bone_is_visible_editbone(arm, ebone)
 
#define EBONE_SELECTABLE(arm, ebone)    (EBONE_VISIBLE(arm, ebone) && !((ebone)->flag & BONE_UNSELECTABLE))
 
#define EBONE_EDITABLE(ebone)
 
#define BONE_SELECT_PARENT   0
 
#define BONE_SELECT_CHILD   1
 
#define ARM_GROUPS_NAME   1
 
#define ARM_GROUPS_ENVELOPE   2
 
#define ARM_GROUPS_AUTO   3
 

Enumerations

enum  ePosePathCalcRange { POSE_PATH_CALC_RANGE_CURRENT_FRAME , POSE_PATH_CALC_RANGE_CHANGED , POSE_PATH_CALC_RANGE_FULL }
 

Functions

EditBoneED_armature_ebone_add (bArmature *arm, const char *name)
 
EditBoneED_armature_ebone_add_primitive (Object *obedit_arm, float length, bool view_aligned)
 
void ED_armature_ebone_copy (EditBone *dest, const EditBone *source)
 
bArmatureED_armature_context (const bContext *C)
 
float ED_armature_ebone_roll_to_vector (const EditBone *bone, const float align_axis[3], bool axis_only)
 
void ED_armature_origin_set (Main *bmain, Object *ob, const float cursor[3], int centermode, int around)
 
void ED_armature_edit_transform (bArmature *arm, const float mat[4][4], bool do_props)
 
void ED_armature_transform (bArmature *arm, const float mat[4][4], bool do_props)
 
void ED_armature_ebone_unique_name (ListBase *ebones, char *name, EditBone *bone)
 
void ED_armature_bone_rename (Main *bmain, bArmature *arm, const char *oldnamep, const char *newnamep)
 
void ED_armature_bones_flip_names (Main *bmain, bArmature *arm, ListBase *bones_names, bool do_strip_numbers)
 
void ED_operatortypes_armature ()
 
void ED_operatormacros_armature ()
 
void ED_keymap_armature (wmKeyConfig *keyconf)
 
int ED_armature_join_objects_exec (bContext *C, wmOperator *op)
 
BaseED_armature_base_and_ebone_from_select_buffer (blender::Span< Base * > bases, unsigned int select_id, EditBone **r_ebone)
 
ObjectED_armature_object_and_ebone_from_select_buffer (blender::Span< Object * > objects, unsigned int select_id, EditBone **r_ebone)
 
BaseED_armature_base_and_pchan_from_select_buffer (blender::Span< Base * > bases, unsigned int select_id, bPoseChannel **r_pchan)
 
BaseED_armature_base_and_bone_from_select_buffer (blender::Span< Base * > bases, unsigned int select_id, Bone **r_bone)
 
bool ED_armature_edit_deselect_all (Object *obedit)
 
bool ED_armature_edit_deselect_all_visible (Object *obedit)
 
bool ED_armature_edit_deselect_all_multi_ex (blender::Span< Base * > bases)
 
bool ED_armature_edit_deselect_all_visible_multi_ex (blender::Span< Base * > bases)
 
bool ED_armature_edit_deselect_all_visible_multi (bContext *C)
 
bool ED_armature_edit_select_pick_bone (bContext *C, Base *basact, EditBone *ebone, int selmask, const SelectPick_Params *params)
 
bool ED_armature_edit_select_pick (bContext *C, const int mval[2], const SelectPick_Params *params)
 
bool ED_armature_edit_select_op_from_tagged (bArmature *arm, int sel_op)
 
void ED_object_vgroup_calc_from_armature (ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, Object *par, int mode, bool mirror)
 
void ED_armature_undosys_type (UndoType *ut)
 
void ED_armature_edit_sync_selection (ListBase *edbo)
 
void ED_armature_ebone_remove_ex (bArmature *arm, EditBone *exBone, bool clear_connected)
 
void ED_armature_ebone_remove (bArmature *arm, EditBone *exBone)
 
bool ED_armature_ebone_is_child_recursive (EditBone *ebone_parent, EditBone *ebone_child)
 
EditBoneED_armature_ebone_find_shared_parent (EditBone *ebone_child[], unsigned int ebone_child_tot)
 
void ED_armature_ebone_to_mat3 (EditBone *ebone, float r_mat[3][3])
 
void ED_armature_ebone_to_mat4 (EditBone *ebone, float r_mat[4][4])
 
void ED_armature_ebone_from_mat3 (EditBone *ebone, const float mat[3][3])
 
void ED_armature_ebone_from_mat4 (EditBone *ebone, const float mat[4][4])
 
EditBoneED_armature_ebone_find_name (const ListBase *edbo, const char *name)
 
EditBoneED_armature_ebone_get_mirrored (const ListBase *edbo, EditBone *ebo)
 
void ED_armature_ebone_transform_mirror_update (bArmature *arm, EditBone *ebo, bool check_select)
 
void ED_armature_edit_transform_mirror_update (Object *obedit)
 
void ED_armature_from_edit (Main *bmain, bArmature *arm)
 
void ED_armature_to_edit (bArmature *arm)
 
void ED_armature_edit_free (bArmature *arm)
 
void ED_armature_ebone_listbase_temp_clear (ListBase *lb)
 
void ED_armature_ebone_listbase_free (ListBase *lb, bool do_id_user)
 
void ED_armature_ebone_listbase_copy (ListBase *lb_dst, ListBase *lb_src, bool do_id_user)
 
int ED_armature_ebone_selectflag_get (const EditBone *ebone)
 
void ED_armature_ebone_selectflag_set (EditBone *ebone, int flag)
 
void ED_armature_ebone_select_set (EditBone *ebone, bool select)
 
void ED_armature_ebone_selectflag_enable (EditBone *ebone, int flag)
 
void ED_armature_ebone_selectflag_disable (EditBone *ebone, int flag)
 
ObjectED_pose_object_from_context (bContext *C)
 
bool ED_object_posemode_exit_ex (Main *bmain, Object *ob)
 
bool ED_object_posemode_exit (bContext *C, Object *ob)
 
bool ED_object_posemode_enter_ex (Main *bmain, Object *ob)
 
bool ED_object_posemode_enter (bContext *C, Object *ob)
 
void ED_pose_recalculate_paths (bContext *C, Scene *scene, Object *ob, ePosePathCalcRange range)
 
bool ED_armature_pose_select_pick_bone (const Scene *scene, ViewLayer *view_layer, View3D *v3d, Object *ob, Bone *bone, const SelectPick_Params *params) ATTR_NONNULL(1
 
bool bool ED_armature_pose_select_pick_with_buffer (const Scene *scene, ViewLayer *view_layer, View3D *v3d, Base *base, const GPUSelectResult *hit_results, int hits, const SelectPick_Params *params, bool do_nearest) ATTR_NONNULL(1
 
bool bool void ED_armature_pose_select_in_wpaint_mode (const Scene *scene, ViewLayer *view_layer, Base *base_select)
 
bool ED_pose_deselect_all_multi_ex (blender::Span< Base * > bases, int select_mode, bool ignore_visibility)
 
bool ED_pose_deselect_all_multi (bContext *C, int select_mode, bool ignore_visibility)
 
bool ED_pose_deselect_all (Object *ob, int select_mode, bool ignore_visibility)
 
void ED_pose_bone_select_tag_update (Object *ob)
 
void ED_pose_bone_select (Object *ob, bPoseChannel *pchan, bool select, bool change_active)
 
void ED_mesh_deform_bind_callback (Object *object, MeshDeformModifierData *mmd, Mesh *cagemesh, float *vertexcos, int verts_num, float cagemat[4][4])
 
EditBoneED_armature_pick_ebone (bContext *C, const int xy[2], bool findunsel, Base **r_base)
 
bPoseChannelED_armature_pick_pchan (bContext *C, const int xy[2], bool findunsel, Base **r_base)
 
BoneED_armature_pick_bone (bContext *C, const int xy[2], bool findunsel, Base **r_base)
 

Macro Definition Documentation

◆ ARM_GROUPS_AUTO

◆ ARM_GROUPS_ENVELOPE

#define ARM_GROUPS_ENVELOPE   2

◆ ARM_GROUPS_NAME

#define ARM_GROUPS_NAME   1

◆ BONE_SELECT_CHILD

#define BONE_SELECT_CHILD   1

Definition at line 55 of file ED_armature.hh.

Referenced by ARMATURE_OT_select_hierarchy(), and POSE_OT_select_hierarchy().

◆ BONE_SELECT_PARENT

◆ BONESEL_ANY

◆ BONESEL_BONE

◆ BONESEL_ROOT

◆ BONESEL_TIP

◆ EBONE_EDITABLE

◆ EBONE_SELECTABLE

◆ EBONE_VISIBLE

Enumeration Type Documentation

◆ ePosePathCalcRange

Corresponds to eAnimvizCalcRange.

Enumerator
POSE_PATH_CALC_RANGE_CURRENT_FRAME 
POSE_PATH_CALC_RANGE_CHANGED 
POSE_PATH_CALC_RANGE_FULL 

Definition at line 267 of file ED_armature.hh.

Function Documentation

◆ ED_armature_base_and_bone_from_select_buffer()

Base * ED_armature_base_and_bone_from_select_buffer ( blender::Span< Base * > bases,
unsigned int select_id,
Bone ** r_bone )

For callers that don't need the pose channel.

◆ ED_armature_base_and_ebone_from_select_buffer()

Base * ED_armature_base_and_ebone_from_select_buffer ( blender::Span< Base * > bases,
unsigned int select_id,
EditBone ** r_ebone )

◆ ED_armature_base_and_pchan_from_select_buffer()

Base * ED_armature_base_and_pchan_from_select_buffer ( blender::Span< Base * > bases,
unsigned int select_id,
bPoseChannel ** r_pchan )

◆ ED_armature_bone_rename()

void ED_armature_bone_rename ( Main * bmain,
bArmature * arm,
const char * oldnamep,
const char * newnamep )

Bone Rename (called by UI for renaming a bone). Seems messy, but that's what you get with not using pointers but channel names :).

Warning
make sure the original bone was not renamed yet!

Definition at line 151 of file armature_naming.cc.

References BKE_animdata_fix_paths_rename_all(), BKE_armature_find_bone_name(), BKE_grease_pencil_vgroup_name_update(), BKE_modifiers_uses_armature(), BKE_object_defgroup_find_name(), BKE_object_supports_vertex_groups(), BKE_pose_channel_find_name(), BKE_pose_channels_is_valid(), BLI_assert, BLI_ghash_haskey(), BLI_ghash_insert(), BLI_ghash_remove(), UVWarpModifierData::bone_dst, UVWarpModifierData::bone_src, bArmature::bonehash, bPose::chanbase, bPose::chanhash, constraint_bone_name_fix(), Object::constraints, Object::data, DEG_id_tag_update(), Camera::dof, ed_armature_bone_unique_name(), ED_armature_ebone_find_name(), ED_armature_ebone_unique_name(), bArmature::edbo, eGpencilModifierType_Armature, eGpencilModifierType_Hook, eModifierType_Hook, eModifierType_UVWarp, ListBase::first, CameraDOFSettings::focus_object, CameraDOFSettings::focus_subtarget, Object::greasepencil_modifiers, bArmature::id, Camera::id, Object::id, ID_RECALC_GEOMETRY, ID_RECALC_SYNC_TO_EVAL, blender::StringRefBase::is_empty(), bGPdata::layers, LISTBASE_FOREACH, MAXBONENAME, Object::modifiers, bDeformGroup::name, Bone::name, bPoseChannel::name, EditBone::name, ID::next, OB_CAMERA, View3D::ob_center, View3D::ob_center_bone, OB_GPENCIL_LEGACY, OB_GREASE_PENCIL, ArmatureGpencilModifierData::object, HookGpencilModifierData::object, HookModifierData::object, UVWarpModifierData::object_dst, UVWarpModifierData::object_src, Main::objects, PARBONE, Object::parent, Object::parsubstr, Object::partype, Object::pose, Main::screens, SPACE_VIEW3D, STREQ, STREQLEN, STRNCPY, HookGpencilModifierData::subtarget, HookModifierData::subtarget, and Object::type.

Referenced by armature_autoside_names_exec(), ED_armature_bones_flip_names(), blender::ed::outliner::namebutton_fn(), and pose_autoside_names_exec().

◆ ED_armature_bones_flip_names()

void ED_armature_bones_flip_names ( Main * bmain,
bArmature * arm,
ListBase * bones_names,
bool do_strip_numbers )

Renames (by flipping) all selected bones at once.

This way if we are flipping related bones (e.g., Bone.L, Bone.R) at the same time all the bones are safely renamed, without conflicting with each other.

Parameters
armArmature the bones belong to
bones_namesList of bone conflict elements (LinkData pointing to names).
do_strip_numbersif set, try to get rid of dot-numbers at end of bone names.

Definition at line 424 of file armature_naming.cc.

References BLI_addtail(), BLI_string_flip_side_name(), ED_armature_bone_rename(), LISTBASE_FOREACH, MAXBONENAME, BoneFlipNameData::name, BoneFlipNameData::name_flip, STREQ, and STRNCPY.

Referenced by armature_flip_names_exec(), and pose_flip_names_exec().

◆ ED_armature_context()

◆ ED_armature_ebone_add()

◆ ED_armature_ebone_add_primitive()

◆ ED_armature_ebone_copy()

void ED_armature_ebone_copy ( EditBone * dest,
const EditBone * source )

Definition at line 1016 of file armature_add.cc.

References BLI_duplicatelist(), and EditBone::bone_collections.

Referenced by duplicateEditBoneObjects().

◆ ED_armature_ebone_find_name()

◆ ED_armature_ebone_find_shared_parent()

EditBone * ED_armature_ebone_find_shared_parent ( EditBone * ebone_child[],
unsigned int ebone_child_tot )

Finds the first parent shared by ebone_child

Parameters
ebone_childChildren bones to search
ebone_child_totSize of the ebone_child array
Returns
The shared parent or NULL.

Definition at line 155 of file armature_utils.cc.

References EBONE_TEMP_UINT, and EditBone::parent.

Referenced by armature_shortest_path_pick_invoke().

◆ ED_armature_ebone_from_mat3()

void ED_armature_ebone_from_mat3 ( EditBone * ebone,
const float mat[3][3] )

◆ ED_armature_ebone_from_mat4()

void ED_armature_ebone_from_mat4 ( EditBone * ebone,
const float mat[4][4] )

◆ ED_armature_ebone_get_mirrored()

◆ ED_armature_ebone_is_child_recursive()

bool ED_armature_ebone_is_child_recursive ( EditBone * ebone_parent,
EditBone * ebone_child )

◆ ED_armature_ebone_listbase_copy()

void ED_armature_ebone_listbase_copy ( ListBase * lb_dst,
ListBase * lb_src,
bool do_id_user )

◆ ED_armature_ebone_listbase_free()

void ED_armature_ebone_listbase_free ( ListBase * lb,
bool do_id_user )

◆ ED_armature_ebone_listbase_temp_clear()

void ED_armature_ebone_listbase_temp_clear ( ListBase * lb)

◆ ED_armature_ebone_remove()

void ED_armature_ebone_remove ( bArmature * arm,
EditBone * exBone )

Definition at line 140 of file armature_utils.cc.

References ED_armature_ebone_remove_ex().

Referenced by armature_delete_selected_exec().

◆ ED_armature_ebone_remove_ex()

void ED_armature_ebone_remove_ex ( bArmature * arm,
EditBone * exBone,
bool clear_connected )
Parameters
clear_connectedWhen false caller is responsible for keeping the flag in a valid state.

Definition at line 125 of file armature_utils.cc.

References bone_free(), bArmature::edbo, EditBone::flag, LISTBASE_FOREACH, and EditBone::parent.

Referenced by armature_dissolve_selected_exec(), and ED_armature_ebone_remove().

◆ ED_armature_ebone_roll_to_vector()

float ED_armature_ebone_roll_to_vector ( const EditBone * bone,
const float align_axis[3],
bool axis_only )

Adjust bone roll to align Z axis with vector align_axis is in local space and is normalized.

Definition at line 193 of file armature_edit.cc.

References angle_v3v3(), BLI_ASSERT_UNIT_V3, cross_v3_v3v3(), dot_v3v3(), fabsf, EditBone::head, M_PI_2, negate_v3(), nor, normalize_v3(), project_v3_v3v3_normalized(), sub_v3_v3v3(), EditBone::tail, and vec_roll_to_mat3_normalized().

Referenced by armature_calc_roll_exec(), and recalcData_edit_armature().

◆ ED_armature_ebone_select_set()

◆ ED_armature_ebone_selectflag_disable()

void ED_armature_ebone_selectflag_disable ( EditBone * ebone,
int flag )

◆ ED_armature_ebone_selectflag_enable()

void ED_armature_ebone_selectflag_enable ( EditBone * ebone,
int flag )

◆ ED_armature_ebone_selectflag_get()

◆ ED_armature_ebone_selectflag_set()

◆ ED_armature_ebone_to_mat3()

◆ ED_armature_ebone_to_mat4()

void ED_armature_ebone_to_mat4 ( EditBone * ebone,
float r_mat[4][4] )

◆ ED_armature_ebone_transform_mirror_update()

◆ ED_armature_ebone_unique_name()

void ED_armature_ebone_unique_name ( ListBase * ebones,
char * name,
EditBone * bone )

Ensure the bone name is unique. If bone is already in list, pass it as argument to ignore it.

Definition at line 86 of file armature_naming.cc.

References BLI_uniquename_cb(), data, DATA_, editbone_unique_check(), and EditBone::name.

Referenced by armature_extrude_exec(), armature_subdivide_exec(), duplicateEditBoneObjects(), ED_armature_bone_rename(), ED_armature_ebone_add(), and ED_armature_join_objects_exec().

◆ ED_armature_edit_deselect_all()

◆ ED_armature_edit_deselect_all_multi_ex()

bool ED_armature_edit_deselect_all_multi_ex ( blender::Span< Base * > bases)

◆ ED_armature_edit_deselect_all_visible()

◆ ED_armature_edit_deselect_all_visible_multi()

◆ ED_armature_edit_deselect_all_visible_multi_ex()

bool ED_armature_edit_deselect_all_visible_multi_ex ( blender::Span< Base * > bases)

◆ ED_armature_edit_free()

◆ ED_armature_edit_select_op_from_tagged()

bool ED_armature_edit_select_op_from_tagged ( bArmature * arm,
int sel_op )

Perform a selection operation on elements which have been 'touched', use for lasso & border select but can be used elsewhere too.

Tagging is done via #EditBone.temp.i using: BONESEL_ROOT, BONESEL_TIP, BONESEL_BONE And optionally ignoring end-points using the BONESEL_ROOT, BONESEL_TIP right shifted 16 bits. (used when the values are clipped outside the view).

Parameters
sel_opeSelectOp type.
Note
Visibility checks must be done by the caller.

Definition at line 1224 of file armature_select.cc.

References armature_edit_select_op_apply(), BONE_CONNECTED, BONE_DONE, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, BONESEL_BONE, BONESEL_ROOT, BONESEL_TIP, ED_armature_edit_sync_selection(), bArmature::edbo, ELEM, and LISTBASE_FOREACH.

Referenced by do_armature_box_select(), and do_lasso_select_armature().

◆ ED_armature_edit_select_pick()

bool ED_armature_edit_select_pick ( bContext * C,
const int mval[2],
const SelectPick_Params * params )

◆ ED_armature_edit_select_pick_bone()

◆ ED_armature_edit_sync_selection()

◆ ED_armature_edit_transform()

void ED_armature_edit_transform ( bArmature * arm,
const float mat[4][4],
bool do_props )

◆ ED_armature_edit_transform_mirror_update()

void ED_armature_edit_transform_mirror_update ( Object * obedit)

If edit-bone (partial) selected, copy data. context; edit-mode armature, with mirror editing enabled.

Definition at line 411 of file armature_utils.cc.

References Object::data, ED_armature_ebone_transform_mirror_update(), bArmature::edbo, and LISTBASE_FOREACH.

Referenced by armature_symmetrize_exec(), ED_transverts_update_obedit(), recalcData_edit_armature(), and recalcData_pose().

◆ ED_armature_from_edit()

void ED_armature_from_edit ( Main * bmain,
bArmature * arm )

Put edit-mode back in Object.

Definition at line 647 of file armature_utils.cc.

References bArmature::act_bone, bArmature::act_edbone, ANIM_armature_bonecoll_reconstruct(), Bone::arm_head, Bone::arm_roll, Bone::arm_tail, armature_finalize_restpose(), Bone::bbone_flag, EditBone::bbone_flag, Bone::bbone_mapping_mode, EditBone::bbone_mapping_mode, Bone::bbone_next, EditBone::bbone_next, Bone::bbone_next_flag, EditBone::bbone_next_flag, Bone::bbone_next_type, EditBone::bbone_next_type, Bone::bbone_prev, EditBone::bbone_prev, Bone::bbone_prev_flag, EditBone::bbone_prev_flag, Bone::bbone_prev_type, EditBone::bbone_prev_type, BKE_armature_bone_hash_free(), BKE_armature_bone_hash_make(), BKE_armature_bonelist_free(), BKE_pose_rebuild(), BLI_addtail(), EditBone::bone, EditBone::bone_collections, bone_free(), bArmature::bonebase, Bone::childbase, Bone_Runtime::collections, Bone::color, EditBone::color, copy_v3_v3(), Bone::curve_in_x, EditBone::curve_in_x, Bone::curve_in_z, EditBone::curve_in_z, Bone::curve_out_x, EditBone::curve_out_x, Bone::curve_out_z, EditBone::curve_out_z, Object::data, DEG_id_tag_update(), Bone::dist, EditBone::dist, Bone::ease1, EditBone::ease1, Bone::ease2, EditBone::ease2, bArmature::edbo, ListBase::first, Bone::flag, EditBone::flag, G, G_DEBUG, EditBone::head, bArmature::id, Object::id, IDP_CopyProperty(), Bone::inherit_scale_mode, EditBone::inherit_scale_mode, Bone::layer, EditBone::layer, len_squared_v3v3(), LISTBASE_FOREACH, MEM_callocN, Bone::name, EditBone::name, EditBone::next, ID::next, Main::objects, Bone::parent, EditBone::parent, printf, Bone::prop, EditBone::prop, Bone::rad_head, EditBone::rad_head, Bone::rad_tail, EditBone::rad_tail, Bone::roll, EditBone::roll, Bone::roll1, EditBone::roll1, Bone::roll2, EditBone::roll2, Bone::runtime, Bone::scale_in, EditBone::scale_in, Bone::scale_out, EditBone::scale_out, Bone::segments, EditBone::segments, square_f(), STRNCPY, EditBone::tail, EditBone::temp, Bone::weight, EditBone::weight, Bone::xwidth, EditBone::xwidth, Bone::zwidth, and EditBone::zwidth.

Referenced by apply_armature_pose2bones_exec(), ED_armature_join_objects_exec(), ED_armature_origin_set(), blender::ed::object::editmode_load_free_ex(), blender::io::usd::import_skeleton(), ArmatureImporter::make_armatures(), blender::ed::object::modifier_skin_armature_create(), separate_armature_bones(), and separate_armature_exec().

◆ ED_armature_join_objects_exec()

int ED_armature_join_objects_exec ( bContext * C,
wmOperator * op )

Join armature exec is exported for use in object->join objects operator.

Definition at line 297 of file armature_relations.cc.

References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), bArmature::adt, Object::adt, ADT_MERGECOPY_KEEP_DST, ANIM_armature_runtime_refresh(), atan2f, blender::ed::object::base_free_and_unlink(), BKE_animdata_copy(), BKE_animdata_merge_copy(), BKE_fcurves_main_cb(), BKE_pose_channels_hash_free(), BKE_report(), BLI_addtail(), BLI_assert, BLI_ghash_free(), BLI_ghash_insert(), BLI_ghash_str_new(), BLI_remlink(), BLI_strdup(), EditBone::bone_collections, bPose::chanbase, bArmature::collection_array, bArmature::collection_array_num, copy_m4_m3(), CTX_data_active_object(), CTX_DATA_BEGIN, CTX_DATA_END, CTX_data_main(), CTX_data_scene(), Object::data, DEG_id_tag_update(), DEG_id_tag_update_ex(), DEG_relations_tag_update(), ED_armature_ebone_find_name(), ED_armature_ebone_to_mat3(), ED_armature_ebone_unique_name(), ED_armature_edit_free(), ED_armature_from_edit(), ED_armature_to_edit(), bArmature::edbo, ListBase::first, EditBone::head, bArmature::id, Object::id, ID_RECALC_GEOMETRY, ID_RECALC_SELECT, invert_m4_m4(), invert_m4_m4_safe_ortho(), join_armature_remap_collection(), joined_armature_fix_animdata_cb(), joined_armature_fix_links(), LISTBASE_FOREACH, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup(), MEM_freeN(), Object::mode, mul_m4_m3m4(), mul_m4_m4m4(), mul_m4_v3(), bPoseChannel::name, EditBone::name, NC_SCENE, ND_LAYER_CONTENT, ND_OB_ACTIVE, bPoseChannel::next, OB_ARMATURE, OPERATOR_CANCELLED, OPERATOR_FINISHED, Object::pose, wmOperator::reports, EditBone::roll, RPT_WARNING, STRNCPY, EditBone::tail, Object::type, unit_m4(), and WM_event_add_notifier().

Referenced by blender::ed::object::object_join_exec().

◆ ED_armature_object_and_ebone_from_select_buffer()

Object * ED_armature_object_and_ebone_from_select_buffer ( blender::Span< Object * > objects,
unsigned int select_id,
EditBone ** r_ebone )

◆ ED_armature_origin_set()

void ED_armature_origin_set ( Main * bmain,
Object * ob,
const float cursor[3],
int centermode,
int around )

◆ ED_armature_pick_bone()

Bone * ED_armature_pick_bone ( bContext * C,
const int xy[2],
bool findunsel,
Base ** r_base )

Definition at line 368 of file armature_select.cc.

References bPoseChannel::bone, ED_armature_pick_pchan(), and xy.

Referenced by pose_select_connected_invoke().

◆ ED_armature_pick_ebone()

EditBone * ED_armature_pick_ebone ( bContext * C,
const int xy[2],
bool findunsel,
Base ** r_base )

◆ ED_armature_pick_pchan()

bPoseChannel * ED_armature_pick_pchan ( bContext * C,
const int xy[2],
bool findunsel,
Base ** r_base )

◆ ED_armature_pose_select_in_wpaint_mode()

bool bool void ED_armature_pose_select_in_wpaint_mode ( const Scene * scene,
ViewLayer * view_layer,
Base * base_select )

While in weight-paint mode, a single pose may be active as well. While not common, it's possible we have multiple armatures deforming a mesh.

This function de-selects all other objects, and selects the new base. It can't be set to the active object because we need to keep this set to the weight paint object.

Definition at line 285 of file pose_select.cc.

References blender::ed::object::BA_DESELECT, blender::ed::object::BA_SELECT, blender::ed::object::base_select(), BASE_SELECTED, BKE_modifiers_get_virtual_modifierlist(), BKE_view_layer_active_object_get(), BKE_view_layer_base_find(), BKE_view_layer_synced_ensure(), BLI_assert, eModifierType_Armature, Base::flag, Object::mode, ModifierData::next, OB_ARMATURE, OB_MODE_ALL_WEIGHT_PAINT, ArmatureModifierData::object, and ModifierData::type.

Referenced by bone_select_menu_exec(), and ed_object_select_pick().

◆ ED_armature_pose_select_pick_bone()

bool ED_armature_pose_select_pick_bone ( const Scene * scene,
ViewLayer * view_layer,
View3D * v3d,
Object * ob,
Bone * bone,
const SelectPick_Params * params )
Returns
True when pick finds an element or the selection changed.

◆ ED_armature_pose_select_pick_with_buffer()

bool bool ED_armature_pose_select_pick_with_buffer ( const Scene * scene,
ViewLayer * view_layer,
View3D * v3d,
Base * base,
const GPUSelectResult * hit_results,
int hits,
const SelectPick_Params * params,
bool do_nearest )

Called for mode-less pose selection. assumes the active object is still on old situation.

Returns
True when pick finds an element or the selection changed.

◆ ED_armature_to_edit()

◆ ED_armature_transform()

void ED_armature_transform ( bArmature * arm,
const float mat[4][4],
bool do_props )

◆ ED_armature_undosys_type()

◆ ED_keymap_armature()

void ED_keymap_armature ( wmKeyConfig * keyconf)

◆ ED_mesh_deform_bind_callback()

◆ ED_object_posemode_enter()

◆ ED_object_posemode_enter_ex()

◆ ED_object_posemode_exit()

bool ED_object_posemode_exit ( bContext * C,
Object * ob )

◆ ED_object_posemode_exit_ex()

◆ ED_object_vgroup_calc_from_armature()

◆ ED_operatormacros_armature()

void ED_operatormacros_armature ( )

◆ ED_operatortypes_armature()

void ED_operatortypes_armature ( )

Definition at line 21 of file armature_ops.cc.

References ARMATURE_OT_align(), ARMATURE_OT_assign_to_collection(), ARMATURE_OT_autoside_names(), ARMATURE_OT_bone_primitive_add(), ARMATURE_OT_calculate_roll(), ARMATURE_OT_click_extrude(), ARMATURE_OT_collection_add(), ARMATURE_OT_collection_assign(), ARMATURE_OT_collection_create_and_assign(), ARMATURE_OT_collection_deselect(), ARMATURE_OT_collection_move(), ARMATURE_OT_collection_remove(), ARMATURE_OT_collection_select(), ARMATURE_OT_collection_unassign(), ARMATURE_OT_collection_unassign_named(), ARMATURE_OT_delete(), ARMATURE_OT_dissolve(), ARMATURE_OT_duplicate(), ARMATURE_OT_extrude(), ARMATURE_OT_fill(), ARMATURE_OT_flip_names(), ARMATURE_OT_hide(), ARMATURE_OT_move_to_collection(), ARMATURE_OT_parent_clear(), ARMATURE_OT_parent_set(), ARMATURE_OT_reveal(), ARMATURE_OT_roll_clear(), ARMATURE_OT_select_all(), ARMATURE_OT_select_hierarchy(), ARMATURE_OT_select_less(), ARMATURE_OT_select_linked(), ARMATURE_OT_select_linked_pick(), ARMATURE_OT_select_mirror(), ARMATURE_OT_select_more(), ARMATURE_OT_select_similar(), ARMATURE_OT_separate(), ARMATURE_OT_shortest_path_pick(), ARMATURE_OT_split(), ARMATURE_OT_subdivide(), ARMATURE_OT_switch_direction(), ARMATURE_OT_symmetrize(), POSE_OT_armature_apply(), POSE_OT_autoside_names(), POSE_OT_blend_to_neighbors(), POSE_OT_blend_with_rest(), POSE_OT_breakdown(), POSE_OT_copy(), POSE_OT_flip_names(), POSE_OT_hide(), POSE_OT_loc_clear(), POSE_OT_paste(), POSE_OT_paths_calculate(), POSE_OT_paths_clear(), POSE_OT_paths_range_update(), POSE_OT_paths_update(), POSE_OT_propagate(), POSE_OT_push(), POSE_OT_quaternions_flip(), POSE_OT_relax(), POSE_OT_reveal(), POSE_OT_rot_clear(), POSE_OT_rotation_mode_set(), POSE_OT_scale_clear(), POSE_OT_select_all(), POSE_OT_select_constraint_target(), POSE_OT_select_grouped(), POSE_OT_select_hierarchy(), POSE_OT_select_linked(), POSE_OT_select_linked_pick(), POSE_OT_select_mirror(), POSE_OT_select_parent(), POSE_OT_transforms_clear(), POSE_OT_user_transforms_clear(), POSE_OT_visual_transform_apply(), POSELIB_OT_apply_pose_asset(), POSELIB_OT_blend_pose_asset(), and WM_operatortype_append().

Referenced by ED_spacetypes_init().

◆ ED_pose_bone_select()

void ED_pose_bone_select ( Object * ob,
bPoseChannel * pchan,
bool select,
bool change_active )

Utility method for changing the selection status of a bone. change_active determines whether to change the active bone of the armature when selecting pose channels. It is false during range selection otherwise true.

Definition at line 103 of file pose_select.cc.

References bArmature::act_bone, bPoseChannel::bone, BONE_SELECTED, Object::data, ED_pose_bone_select_tag_update(), ELEM, Bone::flag, PBONE_SELECTABLE, Object::pose, and select().

Referenced by click_select_channel_group(), blender::ed::object::jump_to_bone(), and select_pchan_for_action_group().

◆ ED_pose_bone_select_tag_update()

◆ ED_pose_deselect_all()

bool ED_pose_deselect_all ( Object * ob,
int select_mode,
bool ignore_visibility )

'select_mode' is usual SEL_SELECT/SEL_DESELECT/SEL_TOGGLE/SEL_INVERT. When true, 'ignore_visibility' makes this func also affect invisible bones (hidden or on hidden layers).

Definition at line 314 of file pose_select.cc.

References BONE_SELECTED, bPose::chanbase, Object::data, bArmature::flag, LISTBASE_FOREACH, PBONE_VISIBLE, Object::pose, pose_do_bone_select(), SEL_DESELECT, SEL_SELECT, and SEL_TOGGLE.

Referenced by click_select_channel_group(), do_pose_tag_select_op_exec(), ED_armature_pose_select_pick_bone(), ED_pose_deselect_all_multi_ex(), blender::ed::object::jump_to_bone(), and pose_circle_select().

◆ ED_pose_deselect_all_multi()

◆ ED_pose_deselect_all_multi_ex()

bool ED_pose_deselect_all_multi_ex ( blender::Span< Base * > bases,
int select_mode,
bool ignore_visibility )

◆ ED_pose_object_from_context()

◆ ED_pose_recalculate_paths()