Blender  V3.3
Functions
armature_add.c 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.h"
#include "BLI_string_utils.h"
#include "BKE_action.h"
#include "BKE_armature.h"
#include "BKE_constraint.h"
#include "BKE_context.h"
#include "BKE_deform.h"
#include "BKE_fcurve.h"
#include "BKE_idprop.h"
#include "BKE_layer.h"
#include "BKE_lib_id.h"
#include "BKE_library.h"
#include "BKE_main.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "WM_api.h"
#include "WM_types.h"
#include "ED_armature.h"
#include "ED_outliner.h"
#include "ED_screen.h"
#include "ED_view3d.h"
#include "DEG_depsgraph.h"
#include "armature_intern.h"

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 *UNUSED(op))
 
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 (struct 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 updateDuplicateConstraintSettings (EditBone *dup_bone, EditBone *orig_bone, Object *ob)
 
static void updateDuplicateCustomBoneShapes (bContext *C, EditBone *dup_bone, Object *ob)
 
static void copy_pchan (EditBone *src_bone, EditBone *dst_bone, Object *src_ob, Object *dst_ob)
 
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.c.

Function Documentation

◆ add_points_bone()

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

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

Definition at line 262 of file armature_add.c.

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

Referenced by armature_fill_bones_exec().

◆ armature_bone_primitive_add_exec()

static int armature_bone_primitive_add_exec ( bContext C,
wmOperator op 
)
static

◆ armature_click_extrude_exec()

static int armature_click_extrude_exec ( bContext C,
wmOperator UNUSEDop 
)
static

◆ armature_click_extrude_invoke()

static int armature_click_extrude_invoke ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ armature_duplicate_selected_exec()

static int armature_duplicate_selected_exec ( bContext C,
wmOperator op 
)
static

◆ armature_extrude_exec()

static int armature_extrude_exec ( bContext C,
wmOperator op 
)
static

◆ ARMATURE_OT_bone_primitive_add()

void ARMATURE_OT_bone_primitive_add ( wmOperatorType ot)

◆ ARMATURE_OT_click_extrude()

void ARMATURE_OT_click_extrude ( wmOperatorType ot)

◆ ARMATURE_OT_duplicate()

void ARMATURE_OT_duplicate ( wmOperatorType ot)

◆ ARMATURE_OT_extrude()

void ARMATURE_OT_extrude ( wmOperatorType ot)

◆ ARMATURE_OT_subdivide()

void ARMATURE_OT_subdivide ( wmOperatorType ot)

◆ ARMATURE_OT_symmetrize()

void ARMATURE_OT_symmetrize ( wmOperatorType ot)

◆ armature_subdivide_exec()

static int armature_subdivide_exec ( bContext C,
wmOperator op 
)
static

◆ armature_symmetrize_exec()

static 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 1098 of file armature_add.c.

References bArmature::act_edbone, EditBone::bbone_flag, 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_view_layer(), CTX_wm_view3d(), Object::data, 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(), ED_armature_edit_validate_active(), bArmature::edbo, ListBase::first, EditBone::flag, get_symmetrized_bone(), EditBone::head, Object::id, ID_RECALC_SELECT, EditBone::inherit_scale_mode, MAXBONENAME, MEM_freeN, EditBone::name, NC_OBJECT, ND_BONE_SELECT, EditBone::next, NULL, OPERATOR_CANCELLED, OPERATOR_FINISHED, EditBone::parent, Object::pose, 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()

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 ( struct EditBone cur_bone,
const char *  name,
struct ListBase editbones,
struct Object src_ob,
struct Object dst_ob 
)
Parameters
editbonesThe target list.

Definition at line 896 of file armature_add.c.

References BLI_addtail(), BLI_strncpy(), copy_pchan(), EditBone::ebone, ED_armature_ebone_unique_name(), MEM_mallocN, EditBone::name, NULL, and EditBone::temp.

Referenced by duplicateEditBone().

◆ ED_armature_ebone_add()

EditBone* ED_armature_ebone_add ( struct bArmature arm,
const char *  name 
)

◆ ED_armature_ebone_add_primitive()

EditBone* ED_armature_ebone_add_primitive ( Object obedit_arm,
float  length,
bool  view_aligned 
)

◆ get_named_editbone()

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

Definition at line 274 of file armature_add.c.

References ListBase::first, EditBone::name, EditBone::next, NULL, and STREQ.

Referenced by updateDuplicateSubtarget().

◆ get_symmetrized_bone()

static EditBone* get_symmetrized_bone ( bArmature arm,
EditBone bone 
)
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 299 of file armature_add.c.

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

Referenced by postEditBoneDuplicate().

◆ postEditBoneDuplicate()

void postEditBoneDuplicate ( struct ListBase editbones,
Object ob 
)

◆ preEditBoneDuplicate()

void preEditBoneDuplicate ( struct ListBase editbones)

Call this before doing any duplications.

Definition at line 289 of file armature_add.c.

References ED_armature_ebone_listbase_temp_clear().

Referenced by armature_duplicate_selected_exec(), and armature_symmetrize_exec().

◆ updateDuplicateActionConstraintSettings()

static void updateDuplicateActionConstraintSettings ( EditBone dup_bone,
EditBone orig_bone,
Object ob,
bPoseChannel pchan,
bConstraint curcon 
)
static

◆ updateDuplicateConstraintSettings()

static void updateDuplicateConstraintSettings ( EditBone dup_bone,
EditBone orig_bone,
Object ob 
)
static

◆ updateDuplicateCustomBoneShapes()

static void updateDuplicateCustomBoneShapes ( bContext C,
EditBone dup_bone,
Object ob 
)
static

◆ updateDuplicateKinematicConstraintSettings()

static void updateDuplicateKinematicConstraintSettings ( bConstraint curcon)
static

◆ updateDuplicateLocRotConstraintSettings()

static void updateDuplicateLocRotConstraintSettings ( Object ob,
bPoseChannel pchan,
bConstraint curcon 
)
static

◆ updateDuplicateSubtarget()

static void updateDuplicateSubtarget ( EditBone dup_bone,
ListBase editbones,
Object ob,
bool  lookup_mirror_subtarget 
)
static

◆ updateDuplicateTransformConstraintSettings()

static void updateDuplicateTransformConstraintSettings ( Object ob,
bPoseChannel pchan,
bConstraint curcon 
)
static

Definition at line 628 of file armature_add.c.

References bConstraint::data, bConstraintOb::depsgraph, and NULL.

Referenced by updateDuplicateConstraintSettings().