Blender V5.0
armature_add.cc File Reference
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
#include "DNA_constraint_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_listbase.h"
#include "BLI_map.hh"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BLI_string.h"
#include "BLI_string_utf8.h"
#include "BLI_string_utils.hh"
#include "BLT_translation.hh"
#include "BKE_action.hh"
#include "BKE_armature.hh"
#include "BKE_constraint.h"
#include "BKE_context.hh"
#include "BKE_fcurve.hh"
#include "BKE_idprop.hh"
#include "BKE_layer.hh"
#include "BKE_lib_id.hh"
#include "BKE_object_types.hh"
#include "BKE_report.hh"
#include "ANIM_action.hh"
#include "RNA_access.hh"
#include "RNA_define.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "ED_armature.hh"
#include "ED_outliner.hh"
#include "ED_screen.hh"
#include "ED_view3d.hh"
#include "ANIM_armature.hh"
#include "ANIM_bone_collections.hh"
#include "DEG_depsgraph.hh"
#include "armature_intern.hh"

Go to the source code of this file.

Functions

EditBoneED_armature_ebone_add (bArmature *arm, const char *name)
EditBoneED_armature_ebone_add_primitive (Object *obedit_arm, const float length, const bool view_aligned)
static wmOperatorStatus armature_click_extrude_exec (bContext *C, wmOperator *)
static wmOperatorStatus armature_click_extrude_invoke (bContext *C, wmOperator *op, const wmEvent *event)
void ARMATURE_OT_click_extrude (wmOperatorType *ot)
EditBoneadd_points_bone (Object *obedit, float head[3], float tail[3])
static void pre_edit_bone_duplicate (ListBase *editbones)
static bPoseChannelpchan_duplicate_map (const bPose *pose, const blender::Map< blender::StringRefNull, blender::StringRefNull > &name_map, bPoseChannel *pchan_src)
static void post_edit_bone_duplicate (ListBase *editbones, Object *ob)
static void update_duplicate_subtarget (EditBone *dup_bone, Object *ob, const bool lookup_mirror_subtarget)
static void update_duplicate_action_constraint_settings (EditBone *dup_bone, EditBone *orig_bone, Object *ob, bPoseChannel *pchan, bConstraint *curcon)
static void update_duplicate_kinematics_constraint_settings (bConstraint *curcon)
static void update_duplicate_loc_rot_constraint_settings (Object *ob, bPoseChannel *pchan, bConstraint *curcon)
static void update_duplicate_transform_constraint_settings (Object *ob, bPoseChannel *pchan, bConstraint *curcon)
static void track_axis_x_swap (int &value)
static void track_axis_x_swap (char &value)
static void update_duplicate_constraint_track_to_settings (bConstraint *curcon)
static void update_duplicate_constraint_lock_track_settings (bConstraint *curcon)
static void update_duplicate_constraint_damp_track_settings (bConstraint *curcon)
static void update_duplicate_constraint_shrinkwrap_settings (bConstraint *curcon)
static void update_duplicate_constraint_settings (EditBone *dup_bone, EditBone *orig_bone, Object *ob)
static void update_duplicate_custom_bone_shapes (bContext *C, EditBone *dup_bone, Object *ob)
static void mirror_pose_bone (Object &ob, EditBone &ebone)
static void mirror_bone_collection_assignments (bArmature &armature, EditBone &source_bone, EditBone &target_bone)
static void copy_pchan (EditBone *src_bone, EditBone *dst_bone, Object *src_ob, Object *dst_ob)
void ED_armature_ebone_copy (EditBone *dest, const EditBone *source)
EditBoneduplicateEditBoneObjects (EditBone *cur_bone, const char *name, ListBase *editbones, Object *src_ob, Object *dst_ob)
EditBoneduplicateEditBone (EditBone *cur_bone, const char *name, ListBase *editbones, Object *ob)
static wmOperatorStatus armature_duplicate_selected_exec (bContext *C, wmOperator *op)
void ARMATURE_OT_duplicate (wmOperatorType *ot)
static EditBoneget_symmetrized_bone (bArmature *arm, EditBone *bone)
static wmOperatorStatus armature_symmetrize_exec (bContext *C, wmOperator *op)
void ARMATURE_OT_symmetrize (wmOperatorType *ot)
static wmOperatorStatus armature_extrude_exec (bContext *C, wmOperator *op)
void ARMATURE_OT_extrude (wmOperatorType *ot)
static wmOperatorStatus armature_bone_primitive_add_exec (bContext *C, wmOperator *op)
void ARMATURE_OT_bone_primitive_add (wmOperatorType *ot)
static wmOperatorStatus armature_subdivide_exec (bContext *C, wmOperator *op)
void ARMATURE_OT_subdivide (wmOperatorType *ot)

Detailed Description

Operators and API's for creating bones.

Definition in file armature_add.cc.

Function Documentation

◆ add_points_bone()

EditBone * add_points_bone ( Object * obedit,
float head[3],
float tail[3] )

Adds an EditBone between the nominated locations (should be in the right space).

Definition at line 291 of file armature_add.cc.

References copy_v3_v3(), Object::data, DATA_, ED_armature_ebone_add(), EditBone::head, and EditBone::tail.

Referenced by armature_fill_bones_exec().

◆ armature_bone_primitive_add_exec()

◆ armature_click_extrude_exec()

◆ armature_click_extrude_invoke()

◆ armature_duplicate_selected_exec()

◆ armature_extrude_exec()

◆ ARMATURE_OT_bone_primitive_add()

void ARMATURE_OT_bone_primitive_add ( wmOperatorType * ot)

◆ ARMATURE_OT_click_extrude()

◆ ARMATURE_OT_duplicate()

void ARMATURE_OT_duplicate ( wmOperatorType * ot)

◆ ARMATURE_OT_extrude()

void ARMATURE_OT_extrude ( wmOperatorType * ot)

◆ ARMATURE_OT_subdivide()

◆ ARMATURE_OT_symmetrize()

◆ armature_subdivide_exec()

◆ armature_symmetrize_exec()

wmOperatorStatus armature_symmetrize_exec ( bContext * C,
wmOperator * op )
static

near duplicate of armature_duplicate_selected_exec, except for parenting part (keep in sync)

Definition at line 1284 of file armature_add.cc.

References bArmature::act_edbone, ThemeWireColor::active, EditBone::bbone_flag, EditBone::bbone_mapping_mode, EditBone::bbone_next, EditBone::bbone_next_flag, EditBone::bbone_next_type, EditBone::bbone_prev, EditBone::bbone_prev_flag, EditBone::bbone_prev_type, BKE_pose_channel_ensure(), BKE_pose_channel_free(), BKE_view_layer_array_from_objects_in_edit_mode_unique_data(), BLI_string_flip_side_name(), BONE_CONNECTED, blender::animrig::bone_is_selected(), blender::animrig::bone_is_visible(), BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, C, EditBone::color, copy_pchan(), copy_v4_v4_uchar(), CTX_DATA_COUNT, CTX_data_scene(), CTX_data_view_layer(), CTX_wm_view3d(), BoneColor::custom, DEG_id_tag_update(), EditBone::drawtype, duplicateEditBone(), EditBone::ebone, EBONE_SELECTABLE, ED_armature_ebone_find_name(), ED_armature_ebone_select_set(), ED_armature_edit_sync_selection(), ED_armature_edit_transform_mirror_update(), bArmature::edbo, ListBase::first, EditBone::flag, ThemeWireColor::flag, get_symmetrized_bone(), EditBone::head, ID_RECALC_SELECT, EditBone::inherit_scale_mode, LISTBASE_FOREACH, MAXBONENAME, mirror_bone_collection_assignments(), mirror_pose_bone(), EditBone::name, NC_OBJECT, ND_BONE_SELECT, EditBone::next, OPERATOR_CANCELLED, OPERATOR_FINISHED, BoneColor::palette_index, EditBone::parent, post_edit_bone_duplicate(), pre_edit_bone_duplicate(), wmOperator::ptr, RNA_boolean_get(), RNA_enum_get(), ThemeWireColor::select, ThemeWireColor::solid, STREQ, EditBone::tail, EditBone::temp, update_duplicate_constraint_settings(), update_duplicate_custom_bone_shapes(), update_duplicate_subtarget(), and WM_event_add_notifier().

Referenced by ARMATURE_OT_symmetrize().

◆ copy_pchan()

◆ duplicateEditBone()

EditBone * duplicateEditBone ( EditBone * cur_bone,
const char * name,
ListBase * editbones,
Object * ob )

◆ duplicateEditBoneObjects()

EditBone * duplicateEditBoneObjects ( EditBone * cur_bone,
const char * name,
ListBase * editbones,
Object * src_ob,
Object * dst_ob )

◆ 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 1076 of file armature_add.cc.

References BLI_duplicatelist(), and EditBone::bone_collections.

Referenced by duplicateEditBoneObjects().

◆ get_symmetrized_bone()

EditBone * get_symmetrized_bone ( bArmature * arm,
EditBone * bone )
static

◆ mirror_bone_collection_assignments()

◆ mirror_pose_bone()

void mirror_pose_bone ( Object & ob,
EditBone & ebone )
static

◆ pchan_duplicate_map()

◆ post_edit_bone_duplicate()

◆ pre_edit_bone_duplicate()

void pre_edit_bone_duplicate ( ListBase * editbones)
static

◆ track_axis_x_swap() [1/2]

void track_axis_x_swap ( char & value)
static

Definition at line 873 of file armature_add.cc.

References TRACK_nX, and TRACK_X.

◆ track_axis_x_swap() [2/2]

◆ update_duplicate_action_constraint_settings()

◆ update_duplicate_constraint_damp_track_settings()

void update_duplicate_constraint_damp_track_settings ( bConstraint * curcon)
static

Definition at line 896 of file armature_add.cc.

References bConstraint::data, data, and track_axis_x_swap().

Referenced by update_duplicate_constraint_settings().

◆ update_duplicate_constraint_lock_track_settings()

void update_duplicate_constraint_lock_track_settings ( bConstraint * curcon)
static

Definition at line 890 of file armature_add.cc.

References bConstraint::data, data, and track_axis_x_swap().

Referenced by update_duplicate_constraint_settings().

◆ update_duplicate_constraint_settings()

◆ update_duplicate_constraint_shrinkwrap_settings()

void update_duplicate_constraint_shrinkwrap_settings ( bConstraint * curcon)
static

Definition at line 902 of file armature_add.cc.

References bConstraint::data, data, and track_axis_x_swap().

Referenced by update_duplicate_constraint_settings().

◆ update_duplicate_constraint_track_to_settings()

void update_duplicate_constraint_track_to_settings ( bConstraint * curcon)
static

Definition at line 884 of file armature_add.cc.

References bConstraint::data, data, and track_axis_x_swap().

Referenced by update_duplicate_constraint_settings().

◆ update_duplicate_custom_bone_shapes()

◆ update_duplicate_kinematics_constraint_settings()

void update_duplicate_kinematics_constraint_settings ( bConstraint * curcon)
static

◆ update_duplicate_loc_rot_constraint_settings()

◆ update_duplicate_subtarget()

◆ update_duplicate_transform_constraint_settings()