56 for (ebo = edbo->
first; ebo; ebo = ebo->
next) {
147 if (ebone->bbone_next == bone) {
148 ebone->bbone_next =
NULL;
150 if (ebone->bbone_prev == bone) {
151 ebone->bbone_prev =
NULL;
166 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
167 if (curBone->
parent == exBone) {
169 if (clear_connected) {
185 for (ebone_child = ebone_child->
parent; ebone_child; ebone_child = ebone_child->
parent) {
186 if (ebone_child == ebone_parent) {
202 #define EBONE_TEMP_UINT(ebone) (*((uint *)(&((ebone)->temp))))
205 for (
uint i = 0; i < ebone_child_tot; i++) {
206 for (
EditBone *ebone_iter = ebone_child[i]; ebone_iter; ebone_iter = ebone_iter->
parent) {
212 for (
uint i = 0; i < ebone_child_tot; i++) {
213 for (
EditBone *ebone_iter = ebone_child[i]->parent; ebone_iter;
214 ebone_iter = ebone_iter->
parent) {
220 for (
EditBone *ebone_iter = ebone_child[0]->parent; ebone_iter;
221 ebone_iter = ebone_iter->
parent) {
227 #undef EBONE_TEMP_UINT
234 float delta[3], roll;
245 roll = ebone_parent->
roll;
329 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
331 if (curBone->
flag & flag) {
334 ebone_mirr->
flag |= (curBone->
flag & flag);
352 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
358 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
369 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
383 for (curBone = arm->
edbo->
first; curBone; curBone = curBone->
next) {
425 for (children = arm->
edbo->
first; children; children = children->
next) {
494 for (curBone = bones->
first; curBone; curBone = curBone->
next) {
568 eBoneAct = eBoneTest;
572 if (curBone == actBone) {
584 if (ebone->temp.bone == link) {
600 Bone *bone = ebone->temp.bone;
627 for (curBone = bonelist->
first; curBone; curBone = curBone->
next) {
632 float parmat_inv[4][4];
653 for (ebone = editbonelist->
first; ebone; ebone = ebone->
next) {
670 printf(
"Bone %s\n", curBone->
name);
674 printf(
"Roll = %f\n",
RAD2DEGF(-
atan2(difmat[2][0], difmat[2][2])));
677 curBone->
roll = -
atan2f(difmat[2][0], difmat[2][2]);
703 for (eBone = arm->
edbo->
first; eBone; eBone = neBone) {
705 neBone = eBone->
next;
707 if (len_sq <=
square_f(0.000001f)) {
712 if (fBone->
parent == eBone) {
717 printf(
"Warning: removed zero sized bone: %s\n", eBone->
name);
744 newBone->
roll = 0.0f;
809 if (obt->
data == arm) {
855 for (ebone = lb->
first; ebone; ebone = ebone_next) {
856 ebone_next = ebone->
next;
875 for (ebone_src = lb_src->
first; ebone_src; ebone_src = ebone_src->
next) {
877 if (ebone_dst->
prop) {
886 for (ebone_dst = lb_dst->
first; ebone_dst; ebone_dst = ebone_dst->
next) {
903 for (ebone = lb->
first; ebone; ebone = ebone->
next) {
void BKE_armature_where_is_bone(struct Bone *bone, const struct Bone *bone_parent, const bool use_recursion)
void BKE_pose_rebuild(struct Main *bmain, struct Object *ob, struct bArmature *arm, const bool do_id_user)
void BKE_armature_bonelist_free(struct ListBase *lb, const bool do_id_user)
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 BKE_armature_bone_hash_make(struct bArmature *arm)
void vec_roll_to_mat3_normalized(const float nor[3], const float roll, float r_mat[3][3])
void IDP_FreeProperty_ex(struct IDProperty *prop, const bool do_id_user)
void IDP_FreeProperty(struct IDProperty *prop)
struct IDProperty * IDP_CopyProperty_ex(const struct IDProperty *prop, const int flag) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
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_findstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) 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, const size_t maxncpy) ATTR_NONNULL()
void BLI_string_flip_side_name(char *r_name, const char *from_name, const bool strip_number, const 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)
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
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)