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()

◆ ARMATURE_OT_click_extrude()

◆ ARMATURE_OT_duplicate()

◆ ARMATURE_OT_extrude()

◆ ARMATURE_OT_subdivide()

◆ ARMATURE_OT_symmetrize()

◆ armature_subdivide_exec()

◆ armature_symmetrize_exec()

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

◆ copy_pchan()

static 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()

static 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()

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

◆ mirror_pose_bone()

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

◆ pchan_duplicate_map()

static 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]

static 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()

static void updateDuplicateConstraintDampTrackSettings ( bConstraint * curcon)
static

Definition at line 884 of file armature_add.cc.

References bConstraint::data, and track_axis_x_swap().

Referenced by updateDuplicateConstraintSettings().

◆ updateDuplicateConstraintLockTrackSettings()

static void updateDuplicateConstraintLockTrackSettings ( bConstraint * curcon)
static

Definition at line 878 of file armature_add.cc.

References bConstraint::data, and track_axis_x_swap().

Referenced by updateDuplicateConstraintSettings().

◆ updateDuplicateConstraintSettings()

◆ updateDuplicateConstraintShrinkwrapSettings()

static void updateDuplicateConstraintShrinkwrapSettings ( bConstraint * curcon)
static

Definition at line 890 of file armature_add.cc.

References bConstraint::data, and track_axis_x_swap().

Referenced by updateDuplicateConstraintSettings().

◆ updateDuplicateConstraintTrackToSettings()

static void updateDuplicateConstraintTrackToSettings ( bConstraint * curcon)
static

Definition at line 872 of file armature_add.cc.

References bConstraint::data, and track_axis_x_swap().

Referenced by updateDuplicateConstraintSettings().

◆ updateDuplicateCustomBoneShapes()

◆ updateDuplicateKinematicConstraintSettings()

static void updateDuplicateKinematicConstraintSettings ( bConstraint * curcon)
static

◆ updateDuplicateLocRotConstraintSettings()

◆ updateDuplicateSubtarget()

◆ updateDuplicateTransformConstraintSettings()