40 for (ebo = edbo->
first; ebo; ebo = ebo->
next) {
131 if (ebone->bbone_next == bone) {
132 ebone->bbone_next =
NULL;
134 if (ebone->bbone_prev == bone) {
135 ebone->bbone_prev =
NULL;
147 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
148 if (curBone->
parent == exBone) {
150 if (clear_connected) {
166 for (ebone_child = ebone_child->
parent; ebone_child; ebone_child = ebone_child->
parent) {
167 if (ebone_child == ebone_parent) {
176 #define EBONE_TEMP_UINT(ebone) (*((uint *)(&((ebone)->temp))))
179 for (
uint i = 0; i < ebone_child_tot; i++) {
180 for (
EditBone *ebone_iter = ebone_child[i]; ebone_iter; ebone_iter = ebone_iter->
parent) {
186 for (
uint i = 0; i < ebone_child_tot; i++) {
187 for (
EditBone *ebone_iter = ebone_child[i]->parent; ebone_iter;
188 ebone_iter = ebone_iter->
parent) {
194 for (
EditBone *ebone_iter = ebone_child[0]->parent; ebone_iter;
195 ebone_iter = ebone_iter->
parent) {
201 #undef EBONE_TEMP_UINT
208 float delta[3], roll;
219 roll = ebone_parent->
roll;
298 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
300 if (curBone->
flag & flag) {
303 ebone_mirr->
flag |= (curBone->
flag & flag);
321 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
327 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
338 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
351 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
392 for (children = arm->
edbo->
first; children; children = children->
next) {
461 for (curBone = bones->
first; curBone; curBone = curBone->
next) {
538 eBoneAct = eBoneTest;
542 if (curBone == actBone) {
554 if (ebone->temp.bone == link) {
570 Bone *bone = ebone->temp.bone;
597 for (curBone = bonelist->
first; curBone; curBone = curBone->
next) {
602 float parmat_inv[4][4];
623 for (ebone = editbonelist->
first; ebone; ebone = ebone->
next) {
640 printf(
"Bone %s\n", curBone->
name);
644 printf(
"Roll = %f\n",
RAD2DEGF(-
atan2(difmat[2][0], difmat[2][2])));
647 curBone->
roll = -
atan2f(difmat[2][0], difmat[2][2]);
672 for (eBone = arm->
edbo->
first; eBone; eBone = neBone) {
674 neBone = eBone->
next;
676 if (len_sq <=
square_f(0.000001f)) {
681 if (fBone->
parent == eBone) {
686 printf(
"Warning: removed zero sized bone: %s\n", eBone->
name);
713 newBone->
roll = 0.0f;
780 if (obt->
data == arm) {
826 for (ebone = lb->
first; ebone; ebone = ebone_next) {
827 ebone_next = ebone->
next;
846 for (ebone_src = lb_src->
first; ebone_src; ebone_src = ebone_src->
next) {
848 if (ebone_dst->
prop) {
857 for (ebone_dst = lb_dst->
first; ebone_dst; ebone_dst = ebone_dst->
next) {
874 for (ebone = lb->
first; ebone; ebone = ebone->
next) {
void BKE_armature_where_is_bone(struct Bone *bone, const struct Bone *bone_parent, bool use_recursion)
void BKE_armature_bone_hash_free(struct bArmature *arm)
void mat3_to_vec_roll(const float mat[3][3], float r_vec[3], float *r_roll)
void vec_roll_to_mat3_normalized(const float nor[3], float roll, float r_mat[3][3])
void BKE_pose_rebuild(struct Main *bmain, struct Object *ob, struct bArmature *arm, bool do_id_user)
void BKE_armature_bone_hash_make(struct bArmature *arm)
void BKE_armature_bonelist_free(struct ListBase *lb, bool do_id_user)
struct IDProperty * IDP_CopyProperty_ex(const struct IDProperty *prop, int flag) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_FreeProperty_ex(struct IDProperty *prop, bool do_id_user)
void IDP_FreeProperty(struct IDProperty *prop)
struct IDProperty * IDP_CopyProperty(const struct IDProperty *prop) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
@ LIB_ID_CREATE_NO_USER_REFCOUNT
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define BLI_ASSERT_UNIT_M3(m)
MINLINE float square_f(float a)
void copy_m3_m4(float m1[3][3], const float m2[4][4])
void copy_m4_m3(float m1[4][4], const float m2[3][3])
void mul_mat3_m4_v3(const float M[4][4], float r[3])
bool invert_m4_m4(float R[4][4], const float A[4][4])
bool invert_m3_m3(float R[3][3], const float A[3][3])
void print_m4(const char *str, const float M[4][4])
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
MINLINE float len_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE float normalize_v3(float r[3])
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE float len_squared_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void madd_v3_v3v3fl(float r[3], const float a[3], const float b[3], float f)
MINLINE void add_v3_v3(float r[3], const float a[3])
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_string_flip_side_name(char *r_name, const char *from_name, bool strip_number, size_t name_len)
void DEG_id_tag_update(struct ID *id, int flag)
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
bool ED_armature_ebone_is_child_recursive(EditBone *ebone_parent, EditBone *ebone_child)
void ED_armature_ebone_selectflag_disable(EditBone *ebone, int flag)
void ED_armature_edit_transform_mirror_update(Object *obedit)
void ED_armature_ebone_transform_mirror_update(bArmature *arm, EditBone *ebo, bool check_select)
void armature_tag_select_mirrored(bArmature *arm)
int bone_looper(Object *ob, Bone *bone, void *data, int(*bone_func)(Object *, Bone *, void *))
void ED_armature_ebone_listbase_temp_clear(ListBase *lb)
static EditBone * make_boneList_recursive(ListBase *edbo, ListBase *bones, EditBone *parent, Bone *actBone)
void ED_armature_ebone_from_mat3(EditBone *ebone, const float mat[3][3])
void ED_armature_ebone_to_mat4(EditBone *ebone, float r_mat[4][4])
void ED_armature_edit_refresh_layer_used(bArmature *arm)
void ED_armature_ebone_remove_ex(bArmature *arm, EditBone *exBone, bool clear_connected)
void ED_armature_edit_sync_selection(ListBase *edbo)
EditBone * make_boneList(ListBase *edbo, ListBase *bones, struct Bone *actBone)
int ED_armature_ebone_selectflag_get(const EditBone *ebone)
void ED_armature_ebone_selectflag_set(EditBone *ebone, int flag)
void armature_select_mirrored_ex(bArmature *arm, const int flag)
void ED_armature_ebone_select_set(EditBone *ebone, bool select)
EditBone * ED_armature_ebone_find_shared_parent(EditBone *ebone_child[], const uint ebone_child_tot)
void ED_armature_edit_validate_active(struct bArmature *arm)
void ED_armature_ebone_listbase_free(ListBase *lb, const bool do_id_user)
static EditBone * find_ebone_link(ListBase *edbo, Bone *link)
static void armature_finalize_restpose(ListBase *bonelist, ListBase *editbonelist)
void armature_select_mirrored(bArmature *arm)
void ED_armature_ebone_to_mat3(EditBone *ebone, float r_mat[3][3])
void ED_armature_ebone_listbase_copy(ListBase *lb_dst, ListBase *lb_src, const bool do_id_user)
void ED_armature_edit_free(struct bArmature *arm)
void ED_armature_from_edit(Main *bmain, bArmature *arm)
void ED_armature_ebone_selectflag_enable(EditBone *ebone, int flag)
void armature_tag_unselect(bArmature *arm)
void ED_armature_ebone_remove(bArmature *arm, EditBone *exBone)
EditBone * ED_armature_ebone_find_name(const ListBase *edbo, const char *name)
void ED_armature_ebone_from_mat4(EditBone *ebone, const float mat[4][4])
#define EBONE_TEMP_UINT(ebone)
void bone_free(bArmature *arm, EditBone *bone)
void ED_armature_to_edit(bArmature *arm)
EditBone * ED_armature_ebone_get_mirrored(const ListBase *edbo, EditBone *ebo)
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
INLINE Rall1d< T, V, S > atan2(const Rall1d< T, V, S > &y, const Rall1d< T, V, S > &x)
bool active
all scheduled work for the GPU.
struct EditBone * bbone_next
struct EditBone * bbone_prev
struct EditBone * act_edbone