Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-07-02 01:56:59 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-07-02 01:56:59 +0400
commitd0ce73c5483af62b79b4c5f3f754a26e2494c97d (patch)
treed49cc868a93b4d177e29b99bd42b78fcfdbc6085 /source/blender/editors/mesh/editmesh_utils.c
parent3d845b4a173fd8c25adb1f28e3ef61c8837562dd (diff)
fix [#35939] [Edit - Vertex mode] [Select]-[Mirror] did not returns right result.
Diffstat (limited to 'source/blender/editors/mesh/editmesh_utils.c')
-rw-r--r--source/blender/editors/mesh/editmesh_utils.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/source/blender/editors/mesh/editmesh_utils.c b/source/blender/editors/mesh/editmesh_utils.c
index 834db3f9ad1..effbe3a619d 100644
--- a/source/blender/editors/mesh/editmesh_utils.c
+++ b/source/blender/editors/mesh/editmesh_utils.c
@@ -35,6 +35,7 @@
#include "DNA_object_types.h"
#include "BLI_math.h"
+#include "BLI_array.h"
#include "BKE_DerivedMesh.h"
#include "BKE_context.h"
@@ -1270,6 +1271,38 @@ BMVert *EDBM_verts_mirror_get(BMEditMesh *em, BMVert *v)
return NULL;
}
+BMEdge *EDBM_verts_mirror_get_edge(BMEditMesh *em, BMEdge *e)
+{
+ BMVert *v1_mirr = EDBM_verts_mirror_get(em, e->v1);
+ if (v1_mirr) {
+ BMVert *v2_mirr = EDBM_verts_mirror_get(em, e->v2);
+ if (v2_mirr) {
+ return BM_edge_exists(v1_mirr, v2_mirr);
+ }
+ }
+
+ return NULL;
+}
+
+BMFace *EDBM_verts_mirror_get_face(BMEditMesh *em, BMFace *f)
+{
+ BMFace *f_mirr = NULL;
+ BMVert **v_mirr_arr = BLI_array_alloca(v_mirr_arr, f->len);
+
+ BMLoop *l_iter, *l_first;
+ unsigned int i = 0;
+
+ l_iter = l_first = BM_FACE_FIRST_LOOP(f);
+ do {
+ if ((v_mirr_arr[i++] = EDBM_verts_mirror_get(em, l_iter->v)) == NULL) {
+ return NULL;
+ }
+ } while ((l_iter = l_iter->next) != l_first);
+
+ BM_face_exists(v_mirr_arr, f->len, &f_mirr);
+ return f_mirr;
+}
+
void EDBM_verts_mirror_cache_clear(BMEditMesh *em, BMVert *v)
{
int *mirr = CustomData_bmesh_get_layer_n(&em->bm->vdata, v->head.data, em->mirror_cdlayer);