Merge branch 'master' into blender2.8
[blender.git] / source / blender / blenkernel / intern / mball_tessellate.c
index cc82d12..7e26a0f 100644 (file)
 
 #include "BKE_global.h"
 
 
 #include "BKE_global.h"
 
-#include "BKE_depsgraph.h"
 #include "BKE_displist.h"
 #include "BKE_main.h"
 #include "BKE_mball_tessellate.h"  /* own include */
 #include "BKE_scene.h"
 
 #include "BKE_displist.h"
 #include "BKE_main.h"
 #include "BKE_mball_tessellate.h"  /* own include */
 #include "BKE_scene.h"
 
+#include "DEG_depsgraph.h"
+#include "DEG_depsgraph_query.h"
+
 #include "BLI_strict_flags.h"
 
 /* experimental (faster) normal calculation */
 #include "BLI_strict_flags.h"
 
 /* experimental (faster) normal calculation */
@@ -1056,7 +1058,7 @@ static void polygonize(PROCESS *process)
  * Iterates over ALL objects in the scene and all of its sets, including
  * making all duplis(not only metas). Copies metas to mainb array.
  * Computes bounding boxes for building BVH. */
  * Iterates over ALL objects in the scene and all of its sets, including
  * making all duplis(not only metas). Copies metas to mainb array.
  * Computes bounding boxes for building BVH. */
-static void init_meta(Main *bmain, EvaluationContext *eval_ctx, PROCESS *process, Scene *scene, Object *ob)
+static void init_meta(Depsgraph *depsgraph, PROCESS *process, Scene *scene, Object *ob)
 {
        Scene *sce_iter = scene;
        Base *base;
 {
        Scene *sce_iter = scene;
        Base *base;
@@ -1075,13 +1077,13 @@ static void init_meta(Main *bmain, EvaluationContext *eval_ctx, PROCESS *process
        BLI_split_name_num(obname, &obnr, ob->id.name + 2, '.');
 
        /* make main array */
        BLI_split_name_num(obname, &obnr, ob->id.name + 2, '.');
 
        /* make main array */
-       BKE_scene_base_iter_next(bmain, eval_ctx, &iter, &sce_iter, 0, NULL, NULL);
-       while (BKE_scene_base_iter_next(bmain, eval_ctx, &iter, &sce_iter, 1, &base, &bob)) {
+       BKE_scene_base_iter_next(depsgraph, &iter, &sce_iter, 0, NULL, NULL);
+       while (BKE_scene_base_iter_next(depsgraph, &iter, &sce_iter, 1, &base, &bob)) {
                if (bob->type == OB_MBALL) {
                        zero_size = 0;
                        ml = NULL;
 
                if (bob->type == OB_MBALL) {
                        zero_size = 0;
                        ml = NULL;
 
-                       if (bob == ob && (base->flag & OB_FROMDUPLI) == 0) {
+                       if (bob == ob && (base->flag_legacy & OB_FROMDUPLI) == 0) {
                                mb = ob->data;
 
                                if (mb->editelems) ml = mb->editelems->first;
                                mb = ob->data;
 
                                if (mb->editelems) ml = mb->editelems->first;
@@ -1233,12 +1235,13 @@ static void init_meta(Main *bmain, EvaluationContext *eval_ctx, PROCESS *process
        }
 }
 
        }
 }
 
-void BKE_mball_polygonize(Main *bmain, EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase)
+void BKE_mball_polygonize(Depsgraph *depsgraph, Scene *scene, Object *ob, ListBase *dispbase)
 {
        MetaBall *mb;
        DispList *dl;
        unsigned int a;
        PROCESS process = {0};
 {
        MetaBall *mb;
        DispList *dl;
        unsigned int a;
        PROCESS process = {0};
+       bool is_render = DEG_get_mode(depsgraph) == DAG_EVAL_RENDER;
 
        mb = ob->data;
 
 
        mb = ob->data;
 
@@ -1249,10 +1252,10 @@ void BKE_mball_polygonize(Main *bmain, EvaluationContext *eval_ctx, Scene *scene
        else if (process.thresh < 0.1f)   process.converge_res = 4;
        else                              process.converge_res = 2;
 
        else if (process.thresh < 0.1f)   process.converge_res = 4;
        else                              process.converge_res = 2;
 
-       if ((eval_ctx->mode != DAG_EVAL_RENDER) && (mb->flag == MB_UPDATE_NEVER)) return;
+       if (is_render && (mb->flag == MB_UPDATE_NEVER)) return;
        if ((G.moving & (G_TRANSFORM_OBJ | G_TRANSFORM_EDIT)) && mb->flag == MB_UPDATE_FAST) return;
 
        if ((G.moving & (G_TRANSFORM_OBJ | G_TRANSFORM_EDIT)) && mb->flag == MB_UPDATE_FAST) return;
 
-       if (eval_ctx->mode == DAG_EVAL_RENDER) {
+       if (is_render) {
                process.size = mb->rendersize;
        }
        else {
                process.size = mb->rendersize;
        }
        else {
@@ -1267,7 +1270,7 @@ void BKE_mball_polygonize(Main *bmain, EvaluationContext *eval_ctx, Scene *scene
        process.pgn_elements = BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE, "Metaball memarena");
 
        /* initialize all mainb (MetaElems) */
        process.pgn_elements = BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE, "Metaball memarena");
 
        /* initialize all mainb (MetaElems) */
-       init_meta(bmain, eval_ctx, &process, scene, ob);
+       init_meta(depsgraph, &process, scene, ob);
 
        if (process.totelem > 0) {
                build_bvh_spatial(&process, &process.metaball_bvh, 0, process.totelem, &process.allbb);
 
        if (process.totelem > 0) {
                build_bvh_spatial(&process, &process.metaball_bvh, 0, process.totelem, &process.allbb);