[Bf-blender-cvs] [d4e7288af9] blender2.8: Edit Mode overlay: Update cache on selection
Clément Foucault
noreply at git.blender.org
Mon Mar 6 04:10:21 CET 2017
Commit: d4e7288af9caec2c5f5a2af758d265663fd75063
Author: Clément Foucault
Date: Mon Mar 6 03:58:08 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBd4e7288af9caec2c5f5a2af758d265663fd75063
Edit Mode overlay: Update cache on selection
===================================================================
M source/blender/blenkernel/BKE_mesh_render.h
M source/blender/blenkernel/intern/mesh_render.c
M source/blender/editors/space_view3d/space_view3d.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_mesh_render.h b/source/blender/blenkernel/BKE_mesh_render.h
index 31c57d4513..0b51dc3d9d 100644
--- a/source/blender/blenkernel/BKE_mesh_render.h
+++ b/source/blender/blenkernel/BKE_mesh_render.h
@@ -33,6 +33,7 @@ struct Batch;
struct Mesh;
void BKE_mesh_batch_cache_dirty(struct Mesh *me);
+void BKE_mesh_batch_selection_dirty(struct Mesh *me);
void BKE_mesh_batch_cache_clear(struct Mesh *me);
void BKE_mesh_batch_cache_free(struct Mesh *me);
struct Batch *BKE_mesh_batch_cache_get_all_edges(struct Mesh *me);
diff --git a/source/blender/blenkernel/intern/mesh_render.c b/source/blender/blenkernel/intern/mesh_render.c
index ad0353b9ba..67991d08f9 100644
--- a/source/blender/blenkernel/intern/mesh_render.c
+++ b/source/blender/blenkernel/intern/mesh_render.c
@@ -811,6 +811,30 @@ void BKE_mesh_batch_cache_dirty(struct Mesh *me)
}
}
+void BKE_mesh_batch_selection_dirty(struct Mesh *me)
+{
+ MeshBatchCache *cache = me->batch_cache;
+ if (cache) {
+ /* TODO Separate Flag vbo */
+ if (cache->overlay_triangles) {
+ Batch_discard_all(cache->overlay_triangles);
+ cache->overlay_triangles = NULL;
+ }
+ if (cache->overlay_loose_verts) {
+ Batch_discard_all(cache->overlay_loose_verts);
+ cache->overlay_loose_verts = NULL;
+ }
+ if (cache->overlay_loose_edges) {
+ Batch_discard_all(cache->overlay_loose_edges);
+ cache->overlay_loose_edges = NULL;
+ }
+ if (cache->overlay_facedots) {
+ Batch_discard_all(cache->overlay_facedots);
+ cache->overlay_facedots = NULL;
+ }
+ }
+}
+
void BKE_mesh_batch_cache_clear(Mesh *me)
{
MeshBatchCache *cache = me->batch_cache;
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index b57f8e9d40..7920631b10 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -47,6 +47,7 @@
#include "BKE_icons.h"
#include "BKE_library.h"
#include "BKE_main.h"
+#include "BKE_mesh_render.h"
#include "BKE_object.h"
#include "BKE_scene.h"
#include "BKE_screen.h"
@@ -893,9 +894,18 @@ static void view3d_main_region_listener(bScreen *sc, ScrArea *sa, ARegion *ar, w
break;
case NC_GEOM:
switch (wmn->data) {
+ case ND_SELECT:
+ {
+ if (scene->obedit) {
+ Object *ob = scene->obedit;
+ if (ob->type == OB_MESH) {
+ struct Mesh *me = ob->data;
+ BKE_mesh_batch_selection_dirty(me);
+ }
+ }
+ }
case ND_DATA:
case ND_VERTEX_GROUP:
- case ND_SELECT:
ED_region_tag_redraw(ar);
break;
}
More information about the Bf-blender-cvs
mailing list