Commit: f4ce6d02cde816c3c681702d97a75617b8e9a598
Author: Sybren A. Stüvel
Date:   Thu Jul 5 11:08:05 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBf4ce6d02cde816c3c681702d97a75617b8e9a598

Fluidsim: ported from DerivedMesh to Mesh

Also removed a bunch of unnecessary #include statements from fluidsim.c.

===================================================================

M       source/blender/blenkernel/BKE_DerivedMesh.h
M       source/blender/blenkernel/BKE_mesh_runtime.h
M       source/blender/blenkernel/intern/DerivedMesh.c
M       source/blender/blenkernel/intern/fluidsim.c
M       source/blender/modifiers/intern/MOD_fluidsim.c
M       source/blender/modifiers/intern/MOD_fluidsim_util.c
M       source/blender/modifiers/intern/MOD_fluidsim_util.h

===================================================================

diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h 
b/source/blender/blenkernel/BKE_DerivedMesh.h
index 3099875c145..e497e84b7e0 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -530,10 +530,6 @@ DerivedMesh *getEditDerivedBMesh(
         struct BMEditMesh *em, struct Object *ob, CustomDataMask data_mask,
         float (*vertexCos)[3]);
 
-DerivedMesh *mesh_create_derived_index_render(
-        struct Depsgraph *depsgraph, struct Scene *scene,
-        struct Object *ob, CustomDataMask dataMask, int index);
-
 /* same as above but wont use render settings */
 DerivedMesh *mesh_create_derived(struct Mesh *me, float (*vertCos)[3]);
 DerivedMesh *mesh_create_derived_view(
diff --git a/source/blender/blenkernel/BKE_mesh_runtime.h 
b/source/blender/blenkernel/BKE_mesh_runtime.h
index f894f72e648..8ff097eb61b 100644
--- a/source/blender/blenkernel/BKE_mesh_runtime.h
+++ b/source/blender/blenkernel/BKE_mesh_runtime.h
@@ -85,6 +85,15 @@ struct Mesh *mesh_get_eval_deform(
         struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
 
+#ifdef USE_DERIVEDMESH
+struct DerivedMesh *mesh_create_derived_index_render(
+        struct Depsgraph *depsgraph, struct Scene *scene,
+        struct Object *ob, CustomDataMask dataMask, int index);
+#endif
+struct Mesh *mesh_create_eval_final_index_render(
+        struct Depsgraph *depsgraph, struct Scene *scene,
+        struct Object *ob, CustomDataMask dataMask, int index);
+
 void BKE_mesh_runtime_eval_to_meshkey(struct Mesh *me_deformed, struct Mesh 
*me, struct KeyBlock *kb);
 
 /* Temporary? A function to give a colorband to derivedmesh for vertexcolor 
ranges */
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c 
b/source/blender/blenkernel/intern/DerivedMesh.c
index 4aee616580e..4fe689523e0 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -3156,6 +3156,8 @@ DerivedMesh *mesh_create_derived_render(struct Depsgraph 
*depsgraph, Scene *scen
        return final;
 }
 
+#ifdef USE_DERIVEDMESH
+/* Deprecated, use `mesh_create_eval_final_index_render` instead. */
 DerivedMesh *mesh_create_derived_index_render(struct Depsgraph *depsgraph, 
Scene *scene, Object *ob, CustomDataMask dataMask, int index)
 {
        DerivedMesh *final;
@@ -3166,6 +3168,19 @@ DerivedMesh *mesh_create_derived_index_render(struct 
Depsgraph *depsgraph, Scene
 
        return final;
 }
+#endif
+struct Mesh *mesh_create_eval_final_index_render(
+        struct Depsgraph *depsgraph, struct Scene *scene,
+        struct Object *ob, CustomDataMask dataMask, int index)
+{
+       Mesh *final;
+
+       mesh_calc_modifiers(
+               depsgraph, scene, ob, NULL, 1, false, dataMask, index, false, 
false, false,
+               NULL, &final);
+
+       return final;
+}
 
 DerivedMesh *mesh_create_derived_view(
         struct Depsgraph *depsgraph, Scene *scene,
diff --git a/source/blender/blenkernel/intern/fluidsim.c 
b/source/blender/blenkernel/intern/fluidsim.c
index 87bc819c34f..bf1532bab42 100644
--- a/source/blender/blenkernel/intern/fluidsim.c
+++ b/source/blender/blenkernel/intern/fluidsim.c
@@ -30,36 +30,21 @@
  */
 
 
-// headers for fluidsim bobj meshes
-#include <stdlib.h>
-#include <zlib.h>
-#include <string.h>
-#include <stdio.h>
-
 #include "MEM_guardedalloc.h"
 
 #include "DNA_mesh_types.h"
 #include "DNA_meshdata_types.h"
-#include "DNA_object_fluidsim_types.h"
-#include "DNA_object_force_types.h" // for pointcache
 #include "DNA_object_types.h"
-#include "DNA_particle_types.h"
-#include "DNA_scene_types.h"
 
 #include "BLI_math.h"
-#include "BLI_blenlib.h"
-#include "BLI_utildefines.h"
 
-#include "BKE_cdderivedmesh.h"
 #include "BKE_customdata.h"
-#include "BKE_DerivedMesh.h"
 #include "BKE_fluidsim.h"
-#include "BKE_modifier.h"
-#include "BKE_mesh.h"
+#include "BKE_library.h"
+#include "BKE_mesh_runtime.h"
 
 /* ************************* fluidsim bobj file handling 
**************************** */
 
-
 
//-------------------------------------------------------------------------------
 // file handling
 
//-------------------------------------------------------------------------------
@@ -69,7 +54,7 @@ void initElbeemMesh(struct Depsgraph *depsgraph, struct Scene 
*scene, struct Obj
                     int *numTriangles, int **triangles,
                     int useGlobalCoords, int modifierIndex)
 {
-       DerivedMesh *dm;
+       Mesh *mesh;
        const MVert *mvert;
        const MLoop *mloop;
        const MLoopTri *looptri, *lt;
@@ -77,13 +62,13 @@ void initElbeemMesh(struct Depsgraph *depsgraph, struct 
Scene *scene, struct Obj
        float *verts;
        int *tris;
 
-       dm = mesh_create_derived_index_render(depsgraph, scene, ob, 
CD_MASK_BAREMESH, modifierIndex);
+       mesh = mesh_create_eval_final_index_render(depsgraph, scene, ob, 
CD_MASK_BAREMESH, modifierIndex);
 
-       mvert = dm->getVertArray(dm);
-       mloop = dm->getLoopArray(dm);
-       looptri = dm->getLoopTriArray(dm);
-       mvert_num = dm->getNumVerts(dm);
-       looptri_num = dm->getNumLoopTri(dm);
+       mvert = mesh->mvert;
+       mloop = mesh->mloop;
+       looptri = BKE_mesh_runtime_looptri_ensure(mesh);
+       mvert_num = mesh->totvert;
+       looptri_num = mesh->runtime.looptris.len;
 
        *numVertices = mvert_num;
        verts = MEM_mallocN(mvert_num * sizeof(float[3]), 
"elbeemmesh_vertices");
@@ -102,5 +87,5 @@ void initElbeemMesh(struct Depsgraph *depsgraph, struct 
Scene *scene, struct Obj
        }
        *triangles = tris;
 
-       dm->release(dm);
+       BKE_id_free(NULL, mesh);
 }
diff --git a/source/blender/modifiers/intern/MOD_fluidsim.c 
b/source/blender/modifiers/intern/MOD_fluidsim.c
index 6e322dc7016..bb87d0065fe 100644
--- a/source/blender/modifiers/intern/MOD_fluidsim.c
+++ b/source/blender/modifiers/intern/MOD_fluidsim.c
@@ -33,14 +33,13 @@
  */
 
 
+#include "DNA_mesh_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_object_fluidsim_types.h"
 #include "DNA_object_types.h"
 
 #include "BLI_utildefines.h"
 
-
-#include "BKE_cdderivedmesh.h"
 #include "BKE_layer.h"
 #include "BKE_modifier.h"
 
@@ -80,25 +79,25 @@ static void copyData(const ModifierData *md, ModifierData 
*target, const int UNU
 
 
 
-static DerivedMesh *applyModifier(
+static Mesh *applyModifier(
         ModifierData *md, const ModifierEvalContext *ctx,
-        DerivedMesh *dm)
+        Mesh *mesh)
 {
        FluidsimModifierData *fluidmd = (FluidsimModifierData *) md;
-       DerivedMesh *result = NULL;
+       Mesh *result = NULL;
 
        /* check for alloc failing */
        if (!fluidmd->fss) {
                initData(md);
 
                if (!fluidmd->fss) {
-                       return dm;
+                       return mesh;
                }
        }
 
-       result = fluidsimModifier_do(fluidmd, ctx, dm);
+       result = fluidsimModifier_do(fluidmd, ctx, mesh);
 
-       return result ? result : dm;
+       return result ? result : mesh;
 }
 
 static void updateDepsgraph(ModifierData *md, const 
ModifierUpdateDepsgraphContext *ctx)
@@ -145,14 +144,14 @@ ModifierTypeInfo modifierType_Fluidsim = {
        /* deformMatrices_DM */ NULL,
        /* deformVertsEM_DM */  NULL,
        /* deformMatricesEM_DM*/NULL,
-       /* applyModifier_DM */  applyModifier,
+       /* applyModifier_DM */  NULL,
        /* applyModifierEM_DM */NULL,
 
        /* deformVerts */       NULL,
        /* deformMatrices */    NULL,
        /* deformVertsEM */     NULL,
        /* deformMatricesEM */  NULL,
-       /* applyModifier */     NULL,
+       /* applyModifier */     applyModifier,
        /* applyModifierEM */   NULL,
 
        /* initData */          initData,
diff --git a/source/blender/modifiers/intern/MOD_fluidsim_util.c 
b/source/blender/modifiers/intern/MOD_fluidsim_util.c
index ed5d08a95d4..963296f80f6 100644
--- a/source/blender/modifiers/intern/MOD_fluidsim_util.c
+++ b/source/blender/modifiers/intern/MOD_fluidsim_util.c
@@ -47,8 +47,8 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_fluidsim.h" /* ensure definitions here match */
-#include "BKE_cdderivedmesh.h"
 #include "BKE_main.h"
+#include "BKE_mesh.h"
 #ifdef WITH_MOD_FLUID
 #  include "BKE_global.h"
 #endif
@@ -165,13 +165,13 @@ void fluidsim_free(FluidsimModifierData *fluidmd)
 
 #ifdef WITH_MOD_FLUID
 /* read .bobj.gz file into a fluidsimDerivedMesh struct */
-static DerivedMesh *fluidsim_read_obj(const char *filename, const MPoly 
*mp_example)
+static Mesh *fluidsim_read_obj(const char *filename, const MPoly *mp_example)
 {
        int wri = 0, i;
        int gotBytes;
        gzFile gzf;
        int numverts = 0, numfaces = 0;
-       DerivedMesh *dm = NULL;
+       Mesh *mesh = NULL;
        MPoly *mp;
        MLoop *ml;
        MVert *mv;
@@ -220,9 +220,9 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, 
const MPoly *mp_exam
                return NULL;
        }
 
-       dm = CDDM_new(numverts, 0, 0, numfaces * 3, numfaces);
+       mesh = BKE_mesh_new_nomain(numverts, 0, 0, numfaces * 3, numfaces);
 
-       if (!dm) {
+       if (!mesh) {
                gzclose(gzf);
                return NULL;
        }
@@ -231,7 +231,7 @@ static DerivedMesh *fluidsim_read_obj(const char *filename, 
const MPoly *mp_exam
        gotBytes = gzread(gzf, &wri, sizeof(wri));
 
        /* read vertex position from file */
-       mv = CDDM_get_verts(dm);
+       mv = mesh->mvert;
 
        for (i = 0; i < numverts; i++, mv++)
                gotBytes = gzread(gzf, mv->co, sizeof(float) * 3);
@@ -239,16 +239,16 @@ static DerivedMesh *fluidsim_read_obj(const char 
*filename, const MPoly *mp_exam
        /* should be the same as numverts */
        gotBytes = gzread(gzf, &wri, sizeof(wri));
        if (wri != numverts) {
-               if (dm)
-                       dm->release(dm);
+               if (mesh)
+                       BKE_id_free(NULL, mesh);
                gzclose(gzf);
                return NULL;
        }
 
        normals = MEM_calloc_arrayN(numverts, 3 * sizeof(short), 
"fluid_tmp_normals");
        if (!normals) {
-               if (dm)
-                       dm->release(dm);
+               if (mesh)
+                       BKE_id_free(NULL, mesh);
                gzclose(gzf);
                return NULL;
        }
@@ -264,16 +264,16 @@ static DerivedMesh *fluidsim_read_obj(const char 
*filename, const MPoly *mp_exam
 
        if (wri != numfaces) {
                printf("Fluidsim: error in reading data from file.\n");
-               if (dm)
-                       dm->release(dm);
+               if (mesh)
+                       BKE_id_free(NULL, mesh);
                gzclose(gzf);
                MEM_freeN(normals);
                return NULL;
        }
 
        /* read triangles from file */
-       mp = CDDM_get_polys(dm);
-       ml = CDDM_get_loops(dm);
+       mp = mesh->mpoly;
+       ml = mesh->mloop;
        for (i = 0; i < numfaces; i++, mp++, ml += 3) {
                int face[3];
 
@@ -294,13 +294,12 @@ static DerivedMesh *fluidsim_read_obj(const char 
*filename, const MPoly *mp_exam
 
        gzclose(gzf);
 
-       CDDM_calc_edges(dm);
-
-       

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to