merge with trunk at r27259 and commit of a patch by anthony jones to fix msvc (though...
[blender-staging.git] / source / blender / blenkernel / intern / smoke.c
index 2196e2ccd045c02a86ece8974c1d4f66ec28be1c..dd25bfe4ec4c7f985f742fe7e054c31b84149fe2 100644 (file)
@@ -291,7 +291,7 @@ int smokeModifier_init (SmokeModifierData *smd, Object *ob, Scene *scene, Derive
 
                if(!smd->coll->bvhtree)
                {
-                       smd->coll->bvhtree = NULL; // bvhtree_build_from_smoke ( ob->obmat, dm->getFaceArray(dm), dm->getNumFaces(dm), dm->getVertArray(dm), dm->getNumVerts(dm), 0.0 );
+                       smd->coll->bvhtree = NULL; // bvhtree_build_from_smoke ( ob->obmat, dm->getTessFaceArray(dm), dm->getNumTessFaces(dm), dm->getVertArray(dm), dm->getNumVerts(dm), 0.0 );
                }
                return 1;
        }
@@ -302,7 +302,7 @@ int smokeModifier_init (SmokeModifierData *smd, Object *ob, Scene *scene, Derive
 static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs)
 {
        MVert *mvert = dm->getVertArray(dm);
-       MFace *mface = dm->getFaceArray(dm);
+       MFace *mface = dm->getTessFaceArray(dm);
        int i = 0, divs = 0;
        int *tridivs = NULL;
        float cell_len = 1.0 / 50.0; // for res = 50
@@ -310,16 +310,16 @@ static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs)
        int quads = 0, facecounter = 0;
 
        // count quads
-       for(i = 0; i < dm->getNumFaces(dm); i++)
+       for(i = 0; i < dm->getNumTessFaces(dm); i++)
        {
                if(mface[i].v4)
                        quads++;
        }
 
-       calcTriangleDivs(ob, mvert, dm->getNumVerts(dm), mface,  dm->getNumFaces(dm), dm->getNumFaces(dm) + quads, &tridivs, cell_len);
+       calcTriangleDivs(ob, mvert, dm->getNumVerts(dm), mface,  dm->getNumTessFaces(dm), dm->getNumTessFaces(dm) + quads, &tridivs, cell_len);
 
        // count triangle divisions
-       for(i = 0; i < dm->getNumFaces(dm) + quads; i++)
+       for(i = 0; i < dm->getNumTessFaces(dm) + quads; i++)
        {
                divs += (tridivs[3 * i] + 1) * (tridivs[3 * i + 1] + 1) * (tridivs[3 * i + 2] + 1);
        }
@@ -336,7 +336,7 @@ static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs)
                VECCOPY(&scs->points[i * 3], tmpvec);
        }
        
-       for(i = 0, facecounter = 0; i < dm->getNumFaces(dm); i++)
+       for(i = 0, facecounter = 0; i < dm->getNumTessFaces(dm); i++)
        {
                int again = 0;
                do
@@ -1130,7 +1130,7 @@ void smokeModifier_do(SmokeModifierData *smd, Scene *scene, Object *ob, DerivedM
                        if(smd->coll->dm)
                                smd->coll->dm->release(smd->coll->dm);
 
-                       smd->coll->dm = CDDM_copy(dm);
+                       smd->coll->dm = CDDM_copy(dm, 1);
 
                        // rigid movement support
                        copy_m4_m4(smd->coll->mat_old, smd->coll->mat);