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:
-rw-r--r--source/blender/blenkernel/intern/mesh.c5
-rw-r--r--source/blender/bmesh/intern/bmesh_mesh.c15
-rw-r--r--source/blender/bmesh/intern/bmesh_mesh.h2
3 files changed, 21 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 1400fbd514e..aa41cf3bc10 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -876,7 +876,10 @@ void BKE_mesh_boundbox_calc(Mesh *me, float r_loc[3], float r_size[3])
if (!r_size) r_size = msize;
INIT_MINMAX(min, max);
- if (!BKE_mesh_minmax(me, min, max)) {
+ if (!(me->edit_btmesh ?
+ BM_mesh_minmax(me->edit_btmesh->bm, min, max) :
+ BKE_mesh_minmax(me, min, max)))
+ {
min[0] = min[1] = min[2] = -1.0f;
max[0] = max[1] = max[2] = 1.0f;
}
diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c
index 50aa3f08fbc..9d100793fc4 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.c
+++ b/source/blender/bmesh/intern/bmesh_mesh.c
@@ -2499,3 +2499,18 @@ void BM_mesh_toolflags_set(BMesh *bm, bool use_toolflags)
bm->use_toolflags = use_toolflags;
}
+
+/**
+ * Calculate the minimum and maximum coordinates of the box that encompasses this mesh.
+ */
+bool BM_mesh_minmax(BMesh *bm, float r_min[3], float r_max[3])
+{
+ BMIter iter;
+ BMVert *v;
+
+ BM_ITER_MESH(v, &iter, bm, BM_VERTS_OF_MESH) {
+ minmax_v3v3_v3(r_min, r_max, v->co);
+ }
+
+ return (bm->totvert != 0);
+}
diff --git a/source/blender/bmesh/intern/bmesh_mesh.h b/source/blender/bmesh/intern/bmesh_mesh.h
index dfd76c6b89f..5497bc7aee9 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.h
+++ b/source/blender/bmesh/intern/bmesh_mesh.h
@@ -132,6 +132,8 @@ void BM_mesh_rebuild(
BMesh *bm, const struct BMeshCreateParams *params,
struct BLI_mempool *vpool, struct BLI_mempool *epool, struct BLI_mempool *lpool, struct BLI_mempool *fpool);
+bool BM_mesh_minmax(BMesh *bm, float r_min[3], float r_max[3]);
+
typedef struct BMAllocTemplate {
int totvert, totedge, totloop, totface;
} BMAllocTemplate;