Mesh batch caches update from depsgraph

We no longer need to rely on Derived mesh flag since the mesh is
properly flushed from the depsgraph
This commit is contained in:
Dalai Felinto
2017-01-26 19:08:27 +01:00
parent 9b7b9d6ae9
commit 8d04f49d0e
2 changed files with 9 additions and 18 deletions

View File

@@ -172,8 +172,6 @@ typedef enum DMDirtyFlag {
/* check this with modifier dependsOnNormals callback to see if normals need recalculation */
DM_DIRTY_NORMALS = 1 << 2,
DM_MESH_BATCH_CACHE = 1 << 3,
} DMDirtyFlag;
typedef struct DerivedMesh DerivedMesh;

View File

@@ -255,18 +255,14 @@ static bool mesh_batch_cache_valid(Mesh *me)
return false;
}
if (cache->is_editmode) {
DerivedMesh *dm = me->edit_btmesh->derivedFinal;
if ((dm->dirty & DM_MESH_BATCH_CACHE) == 0) {
return false;
}
}
if (cache->is_dirty == false) {
return true;
}
else {
if ((cache->tot_edges != mesh_render_get_num_edges(me)) ||
if (cache->is_editmode) {
return false;
}
else if ((cache->tot_edges != mesh_render_get_num_edges(me)) ||
(cache->tot_faces != mesh_render_get_num_faces(me)) ||
(cache->tot_polys != mesh_render_get_num_polys(me)) ||
(cache->tot_verts != mesh_render_get_num_verts(me)))
@@ -283,14 +279,11 @@ static void mesh_batch_cache_init(Mesh *me)
MeshBatchCache *cache = me->batch_cache;
cache->is_editmode = me->edit_btmesh != NULL;
cache->tot_edges = mesh_render_get_num_edges(me);
cache->tot_faces = mesh_render_get_num_faces(me);
cache->tot_polys = mesh_render_get_num_polys(me);
cache->tot_verts = mesh_render_get_num_verts(me);
if (cache->is_editmode) {
DerivedMesh *dm = me->edit_btmesh->derivedFinal;
dm->dirty |= DM_MESH_BATCH_CACHE;
if (cache->is_editmode == false) {
cache->tot_edges = mesh_render_get_num_edges(me);
cache->tot_faces = mesh_render_get_num_faces(me);
cache->tot_polys = mesh_render_get_num_polys(me);
cache->tot_verts = mesh_render_get_num_verts(me);
}
cache->is_dirty = false;