Blender V4.3
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_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.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 "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_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, float length, bool view_aligned)
static int armature_click_extrude_exec (bContext *C, wmOperator *)
static int 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 EditBoneget_named_editbone (ListBase *edbo, const char *name)
void preEditBoneDuplicate (ListBase *editbones)
static bPoseChannelpchan_duplicate_map (const bPose *pose, GHash *name_map, bPoseChannel *pchan_src)
void postEditBoneDuplicate (ListBase *editbones, Object *ob)
static void updateDuplicateSubtarget (EditBone *dup_bone, ListBase *editbones, Object *ob, bool lookup_mirror_subtarget)
static void updateDuplicateActionConstraintSettings (EditBone *dup_bone, EditBone *orig_bone, Object *ob, bPoseChannel *pchan, bConstraint *curcon)
static void updateDuplicateKinematicConstraintSettings (bConstraint *curcon)
static void updateDuplicateLocRotConstraintSettings (Object *ob, bPoseChannel *pchan, bConstraint *curcon)
static void updateDuplicateTransformConstraintSettings (Object *ob, bPoseChannel *pchan, bConstraint *curcon)
static void track_axis_x_swap (int &value)
static void track_axis_x_swap (char &value)
static void updateDuplicateConstraintTrackToSettings (bConstraint *curcon)
static void updateDuplicateConstraintLockTrackSettings (bConstraint *curcon)
static void updateDuplicateConstraintDampTrackSettings (bConstraint *curcon)
static void updateDuplicateConstraintShrinkwrapSettings (bConstraint *curcon)
static void updateDuplicateConstraintSettings (EditBone *dup_bone, EditBone *orig_bone, Object *ob)
static void updateDuplicateCustomBoneShapes (bContext *C, EditBone *dup_bone, Object *ob)
static void mirror_pose_bone (Object &ob, EditBone &ebone)
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 int armature_duplicate_selected_exec (bContext *C, wmOperator *op)
void ARMATURE_OT_duplicate (wmOperatorType *ot)
static EditBoneget_symmetrized_bone (bArmature *arm, EditBone *bone)
static int armature_symmetrize_exec (bContext *C, wmOperator *op)
void ARMATURE_OT_symmetrize (wmOperatorType *ot)
static int armature_extrude_exec (bContext *C, wmOperator *op)
void ARMATURE_OT_extrude (wmOperatorType *ot)
static int armature_bone_primitive_add_exec (bContext *C, wmOperator *op)
void ARMATURE_OT_bone_primitive_add (wmOperatorType *ot)
static int 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 280 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()

void ARMATURE_OT_symmetrize ( wmOperatorType * ot)

◆ armature_subdivide_exec()

◆ armature_symmetrize_exec()

int 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 1224 of file armature_add.cc.

References bArmature::act_edbone, 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, BONE_ROOTSEL, BONE_SELECTED, BONE_TIPSEL, C, copy_pchan(), CTX_DATA_COUNT, CTX_data_scene(), CTX_data_view_layer(), CTX_wm_view3d(), DEG_id_tag_update(), duplicateEditBone(), EditBone::ebone, EBONE_SELECTABLE, EBONE_VISIBLE, 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, get_symmetrized_bone(), EditBone::head, ID_RECALC_SELECT, EditBone::inherit_scale_mode, int, LISTBASE_FOREACH, MAXBONENAME, mirror_pose_bone(), EditBone::name, NC_OBJECT, ND_BONE_SELECT, EditBone::next, OPERATOR_CANCELLED, OPERATOR_FINISHED, EditBone::parent, postEditBoneDuplicate(), preEditBoneDuplicate(), wmOperator::ptr, RNA_enum_get(), STREQ, EditBone::tail, EditBone::temp, updateDuplicateConstraintSettings(), updateDuplicateCustomBoneShapes(), updateDuplicateSubtarget(), and WM_event_add_notifier().

Referenced by ARMATURE_OT_symmetrize().

◆ copy_pchan()

void copy_pchan ( EditBone * src_bone,
EditBone * dst_bone,
Object * src_ob,
Object * dst_ob )
static

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

References BLI_duplicatelist(), and EditBone::bone_collections.

Referenced by duplicateEditBoneObjects().

◆ get_named_editbone()

EditBone * get_named_editbone ( ListBase * edbo,
const char * name )
static

Definition at line 292 of file armature_add.cc.

References LISTBASE_FOREACH, and STREQ.

Referenced by updateDuplicateSubtarget().

◆ get_symmetrized_bone()

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

◆ mirror_pose_bone()

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

◆ pchan_duplicate_map()

bPoseChannel * pchan_duplicate_map ( const bPose * pose,
GHash * name_map,
bPoseChannel * pchan_src )
static

Helper function for postEditBoneDuplicate, return the destination pchan from the original.

Definition at line 315 of file armature_add.cc.

References BKE_pose_channel_find_name(), BLI_ghash_lookup(), and bPoseChannel::name.

Referenced by postEditBoneDuplicate().

◆ postEditBoneDuplicate()

◆ preEditBoneDuplicate()

void preEditBoneDuplicate ( ListBase * editbones)

Call this before doing any duplication.

Definition at line 305 of file armature_add.cc.

References ED_armature_ebone_listbase_temp_clear().

Referenced by armature_duplicate_selected_exec(), and armature_symmetrize_exec().

◆ track_axis_x_swap() [1/2]

void track_axis_x_swap ( char & value)
static

Definition at line 861 of file armature_add.cc.

References TRACK_nX, and TRACK_X.

◆ track_axis_x_swap() [2/2]

◆ updateDuplicateActionConstraintSettings()

◆ updateDuplicateConstraintDampTrackSettings()

void updateDuplicateConstraintDampTrackSettings ( bConstraint * curcon)
static

Definition at line 884 of file armature_add.cc.

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

Referenced by updateDuplicateConstraintSettings().

◆ updateDuplicateConstraintLockTrackSettings()

void updateDuplicateConstraintLockTrackSettings ( bConstraint * curcon)
static

Definition at line 878 of file armature_add.cc.

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

Referenced by updateDuplicateConstraintSettings().

◆ updateDuplicateConstraintSettings()

◆ updateDuplicateConstraintShrinkwrapSettings()

void updateDuplicateConstraintShrinkwrapSettings ( bConstraint * curcon)
static

Definition at line 890 of file armature_add.cc.

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

Referenced by updateDuplicateConstraintSettings().

◆ updateDuplicateConstraintTrackToSettings()

void updateDuplicateConstraintTrackToSettings ( bConstraint * curcon)
static

Definition at line 872 of file armature_add.cc.

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

Referenced by updateDuplicateConstraintSettings().

◆ updateDuplicateCustomBoneShapes()

◆ updateDuplicateKinematicConstraintSettings()

void updateDuplicateKinematicConstraintSettings ( bConstraint * curcon)
static

◆ updateDuplicateLocRotConstraintSettings()

◆ updateDuplicateSubtarget()

◆ updateDuplicateTransformConstraintSettings()