Blender V4.3
armature_relations.cc File Reference
#include "MEM_guardedalloc.h"
#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 "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_map.hh"
#include "BLI_math_matrix.h"
#include "BLI_math_vector.h"
#include "BLT_translation.hh"
#include "BKE_action.hh"
#include "BKE_anim_data.hh"
#include "BKE_animsys.h"
#include "BKE_armature.hh"
#include "BKE_constraint.h"
#include "BKE_context.hh"
#include "BKE_fcurve_driver.h"
#include "BKE_idprop.hh"
#include "BKE_layer.hh"
#include "BKE_main.hh"
#include "BKE_report.hh"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_build.hh"
#include "RNA_access.hh"
#include "RNA_define.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "ED_armature.hh"
#include "ED_object.hh"
#include "ED_outliner.hh"
#include "ED_screen.hh"
#include "UI_interface.hh"
#include "UI_resources.hh"
#include "ANIM_bone_collections.hh"
#include "armature_intern.hh"

Go to the source code of this file.

Functions

Edit Armature Join
Note
No operator define here as this is exported to the Object-level operator.
static void joined_armature_fix_links_constraints (Main *bmain, Object *ob, Object *tarArm, Object *srcArm, bPoseChannel *pchan, EditBone *curbone, ListBase *lb)
 
static void joined_armature_fix_animdata_cb (Main *bmain, ID *id, FCurve *fcu, Object *srcArm, Object *tarArm, GHash *names_map)
 
static void joined_armature_fix_links (Main *bmain, Object *tarArm, Object *srcArm, bPoseChannel *pchan, EditBone *curbone)
 
static BoneCollectionjoin_armature_remap_collection (const bArmature *src_arm, const int src_index, bArmature *dest_arm, blender::Map< std::string, BoneCollection * > &bone_collection_by_name)
 
int ED_armature_join_objects_exec (bContext *C, wmOperator *op)
 
Edit Armature Separate
static void separated_armature_fix_links (Main *bmain, Object *origArm, Object *newArm)
 
static void separate_armature_bones (Main *bmain, Object *ob, const bool is_select)
 
static int separate_armature_exec (bContext *C, wmOperator *op)
 
void ARMATURE_OT_separate (wmOperatorType *ot)
 

Edit Armature Parenting

#define ARM_PAR_CONNECT   1
 
#define ARM_PAR_OFFSET   2
 
#define ARM_PAR_CLEAR   1
 
#define ARM_PAR_CLEAR_DISCONNECT   2
 
static const EnumPropertyItem prop_editarm_make_parent_types []
 
static const EnumPropertyItem prop_editarm_clear_parent_types []
 
static void bone_connect_to_existing_parent (EditBone *bone)
 
static void bone_connect_to_new_parent (ListBase *edbo, EditBone *selbone, EditBone *actbone, short mode)
 
static int armature_parent_set_exec (bContext *C, wmOperator *op)
 
static int armature_parent_set_invoke (bContext *C, wmOperator *, const wmEvent *)
 
void ARMATURE_OT_parent_set (wmOperatorType *ot)
 
static void editbone_clear_parent (EditBone *ebone, int mode)
 
static int armature_parent_clear_exec (bContext *C, wmOperator *op)
 
static int armature_parent_clear_invoke (bContext *C, wmOperator *, const wmEvent *)
 
void ARMATURE_OT_parent_clear (wmOperatorType *ot)
 

Detailed Description

Operators for relations between bones and for transferring bones between armature objects.

Definition in file armature_relations.cc.

Macro Definition Documentation

◆ ARM_PAR_CLEAR

#define ARM_PAR_CLEAR   1

Definition at line 791 of file armature_relations.cc.

Referenced by armature_parent_clear_invoke().

◆ ARM_PAR_CLEAR_DISCONNECT

#define ARM_PAR_CLEAR_DISCONNECT   2

Definition at line 792 of file armature_relations.cc.

Referenced by armature_parent_clear_invoke().

◆ ARM_PAR_CONNECT

#define ARM_PAR_CONNECT   1

◆ ARM_PAR_OFFSET

#define ARM_PAR_OFFSET   2

Definition at line 788 of file armature_relations.cc.

Referenced by armature_parent_set_invoke().

Function Documentation

◆ ARMATURE_OT_parent_clear()

◆ ARMATURE_OT_parent_set()

◆ ARMATURE_OT_separate()

◆ armature_parent_clear_exec()

◆ armature_parent_clear_invoke()

◆ armature_parent_set_exec()

◆ armature_parent_set_invoke()

◆ bone_connect_to_existing_parent()

static void bone_connect_to_existing_parent ( EditBone * bone)
static

◆ bone_connect_to_new_parent()

static void bone_connect_to_new_parent ( ListBase * edbo,
EditBone * selbone,
EditBone * actbone,
short mode )
static

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

◆ editbone_clear_parent()

static void editbone_clear_parent ( EditBone * ebone,
int mode )
static

Definition at line 1020 of file armature_relations.cc.

References EditBone::flag, and EditBone::parent.

Referenced by armature_parent_clear_exec().

◆ join_armature_remap_collection()

◆ joined_armature_fix_animdata_cb()

◆ joined_armature_fix_links()

◆ joined_armature_fix_links_constraints()

◆ separate_armature_bones()

static void separate_armature_bones ( Main * bmain,
Object * ob,
const bool is_select )
static

Helper function for armature separating - remove certain bones from the given armature.

Parameters
obArmature object (must not be is not in edit-mode).
is_selectremove selected bones from the armature, otherwise the unselected bones are removed.

Definition at line 608 of file armature_relations.cc.

References BKE_pose_channel_free(), BKE_pose_channels_hash_free(), BLI_freelinkN(), bone_free(), BONE_SELECTED, bPose::chanbase, Object::data, EBONE_VISIBLE, ED_armature_ebone_find_name(), ED_armature_edit_deselect_all(), ED_armature_edit_free(), ED_armature_from_edit(), ED_armature_to_edit(), bArmature::edbo, ListBase::first, EditBone::flag, LISTBASE_FOREACH, bPoseChannel::name, bPoseChannel::next, and Object::pose.

Referenced by separate_armature_exec().

◆ separate_armature_exec()

◆ separated_armature_fix_links()

Variable Documentation

◆ prop_editarm_clear_parent_types

const EnumPropertyItem prop_editarm_clear_parent_types[]
static
Initial value:
= {
{ARM_PAR_CLEAR, "CLEAR", 0, "Clear Parent", ""},
{ARM_PAR_CLEAR_DISCONNECT, "DISCONNECT", 0, "Disconnect Bone", ""},
{0, nullptr, 0, nullptr, nullptr},
}
#define ARM_PAR_CLEAR_DISCONNECT
#define ARM_PAR_CLEAR

Definition at line 1014 of file armature_relations.cc.

Referenced by ARMATURE_OT_parent_clear().

◆ prop_editarm_make_parent_types

const EnumPropertyItem prop_editarm_make_parent_types[]
static
Initial value:
= {
{ARM_PAR_CONNECT, "CONNECTED", 0, "Connected", ""},
{ARM_PAR_OFFSET, "OFFSET", 0, "Keep Offset", ""},
{0, nullptr, 0, nullptr, nullptr},
}
#define ARM_PAR_OFFSET
#define ARM_PAR_CONNECT

Definition at line 854 of file armature_relations.cc.

Referenced by ARMATURE_OT_parent_set().