fix for own regression in r44361 (broke BM_vert_in_face)
also fix py api: bmesh.utils.face_split(face, v1, v2)
This commit is contained in:
@@ -101,7 +101,26 @@ BMLoop *BM_face_other_loop(BMEdge *e, BMFace *f, BMVert *v)
|
|||||||
|
|
||||||
int BM_vert_in_face(BMFace *f, BMVert *v)
|
int BM_vert_in_face(BMFace *f, BMVert *v)
|
||||||
{
|
{
|
||||||
return bmesh_radial_find_first_faceloop(BM_FACE_FIRST_LOOP(f), v) != NULL;
|
BMLoop *l_iter, *l_first;
|
||||||
|
|
||||||
|
#ifdef USE_BMESH_HOLES
|
||||||
|
BMLoopList *lst;
|
||||||
|
for (lst = f->loops.first; lst; lst = lst->next)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
#ifdef USE_BMESH_HOLES
|
||||||
|
l_iter = l_first = lst->first;
|
||||||
|
#else
|
||||||
|
l_iter = l_first = f->l_first;
|
||||||
|
#endif
|
||||||
|
do {
|
||||||
|
if (l_iter->v == v) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
} while ((l_iter = l_iter->next) != l_first);
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -551,7 +570,7 @@ float BM_edge_face_angle(BMesh *UNUSED(bm), BMEdge *e)
|
|||||||
return angle_normalized_v3v3(l1->f->no, l2->f->no);
|
return angle_normalized_v3v3(l1->f->no, l2->f->no);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return (float)M_PI / 2.0f; /* acos(0.0) */
|
return DEG2RADF(90.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -581,7 +600,7 @@ float BM_vert_edge_angle(BMesh *UNUSED(bm), BMVert *v)
|
|||||||
return M_PI - angle_v3v3v3(v1->co, v->co, v2->co);
|
return M_PI - angle_v3v3v3(v1->co, v->co, v2->co);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return (float)M_PI / 2.0f; /* acos(0.0) */
|
return DEG2RADF(90.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -708,6 +708,9 @@ PyDoc_STRVAR(bpy_bmvert_calc_edge_angle_doc,
|
|||||||
".. method:: calc_edge_angle()\n"
|
".. method:: calc_edge_angle()\n"
|
||||||
"\n"
|
"\n"
|
||||||
" Return the angle between 2 connected edges.\n"
|
" Return the angle between 2 connected edges.\n"
|
||||||
|
"\n"
|
||||||
|
" :return: The angle between both edges in radians.\n"
|
||||||
|
" :rtype: float\n"
|
||||||
);
|
);
|
||||||
static PyObject *bpy_bmvert_calc_edge_angle(BPy_BMVert *self)
|
static PyObject *bpy_bmvert_calc_edge_angle(BPy_BMVert *self)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ static PyObject *bpy_bm_utils_face_split(PyObject *UNUSED(self), PyObject *args)
|
|||||||
BMFace *f_new = NULL;
|
BMFace *f_new = NULL;
|
||||||
BMLoop *l_new = NULL;
|
BMLoop *l_new = NULL;
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "O!O!|O!:face_split",
|
if (!PyArg_ParseTuple(args, "O!O!O!|O!:face_split",
|
||||||
&BPy_BMFace_Type, &py_face,
|
&BPy_BMFace_Type, &py_face,
|
||||||
&BPy_BMVert_Type, &py_vert_a,
|
&BPy_BMVert_Type, &py_vert_a,
|
||||||
&BPy_BMVert_Type, &py_vert_b,
|
&BPy_BMVert_Type, &py_vert_b,
|
||||||
@@ -362,7 +362,7 @@ static PyObject *bpy_bm_utils_face_split(PyObject *UNUSED(self), PyObject *args)
|
|||||||
bm = py_face->bm;
|
bm = py_face->bm;
|
||||||
|
|
||||||
f_new = BM_face_split(bm, py_face->f,
|
f_new = BM_face_split(bm, py_face->f,
|
||||||
py_vert_a->v, py_vert_a->v,
|
py_vert_a->v, py_vert_b->v,
|
||||||
&l_new, py_edge_example ? py_edge_example->e : NULL);
|
&l_new, py_edge_example ? py_edge_example->e : NULL);
|
||||||
|
|
||||||
if (f_new && l_new) {
|
if (f_new && l_new) {
|
||||||
|
|||||||
Reference in New Issue
Block a user