Revision: 37111
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37111
Author:   jwilkins
Date:     2011-06-02 23:31:18 +0000 (Thu, 02 Jun 2011)
Log Message:
-----------
Revision: 29350
Author: nicholasbishop
Date: 5:46:29 PM, Tuesday, June 08, 2010
Message:
* A little refactoring, pulled some common code together in multire

Modified Paths:
--------------
    branches/soc-2011-onion/source/blender/blenkernel/intern/multires.c

Modified: branches/soc-2011-onion/source/blender/blenkernel/intern/multires.c
===================================================================
--- branches/soc-2011-onion/source/blender/blenkernel/intern/multires.c 
2011-06-02 23:25:38 UTC (rev 37110)
+++ branches/soc-2011-onion/source/blender/blenkernel/intern/multires.c 
2011-06-02 23:31:18 UTC (rev 37111)
@@ -607,6 +607,19 @@
        dispdm->release(dispdm);
 }
 
+static DMGridData **copy_grids(DMGridData **grids, int totgrid, int gridsize)
+{
+       DMGridData **grids_copy = MEM_callocN(sizeof(DMGridData*) * totgrid, 
"subgrids");
+       int i;
+
+       for(i = 0; i < totgrid; ++i) {
+               grids_copy[i] = 
MEM_callocN(sizeof(DMGridData)*gridsize*gridsize, "subgrid");
+               memcpy(grids_copy[i], grids[i], 
sizeof(DMGridData)*gridsize*gridsize);
+       }
+
+       return grids_copy;
+}
+
 static void multires_subdivide(MultiresModifierData *mmd, Object *ob, int 
totlvl, int updateblock, int simple)
 {
        Mesh *me = ob->data;
@@ -645,16 +658,12 @@
                lowGridSize = lowdm->getGridSize(lowdm);
                lowGridData = lowdm->getGridData(lowdm);
 
-               subGridData = MEM_callocN(sizeof(float*)*numGrids, 
"subGridData*");
+               /* backup subsurf grids */
+               subGridData = copy_grids(highGridData, numGrids, highGridSize);
 
-               for(i = 0; i < numGrids; ++i) {
-                       /* backup subsurf grids */
-                       subGridData[i] = 
MEM_callocN(sizeof(DMGridData)*highGridSize*highGridSize, "subGridData");
-                       memcpy(subGridData[i], highGridData[i], 
sizeof(DMGridData)*highGridSize*highGridSize);
-
-                       /* overwrite with current displaced grids */
+               /* overwrite with current displaced grids */
+               for(i = 0; i < numGrids; ++i)
                        multires_copy_dm_grid(highGridData[i], lowGridData[i], 
highGridSize, lowGridSize);
-               }
 
                /* low lower level dm no longer needed at this point */
                lowdm->release(lowdm);
@@ -855,15 +864,13 @@
                        lowGridData = lowdm->getGridData(lowdm);
                        gridData = dm->getGridData(dm);
 
-                       subGridData = MEM_callocN(sizeof(DMGridData*)*numGrids, 
"subGridData*");
+                       /* backup subsurf grids */
+                       subGridData = copy_grids(highGridData, numGrids, 
highGridSize);
+
                        diffGrid = 
MEM_callocN(sizeof(DMGridData)*lowGridSize*lowGridSize, "diff");
 
+                       /* write difference of subsurf and displaced low level 
into high subsurf */
                        for(i = 0; i < numGrids; ++i) {
-                               /* backup subsurf grids */
-                               subGridData[i] = 
MEM_callocN(sizeof(DMGridData)*highGridSize*highGridSize, "subGridData");
-                               memcpy(subGridData[i], highGridData[i], 
sizeof(DMGridData)*highGridSize*highGridSize);
-
-                               /* write difference of subsurf and displaced 
low level into high subsurf */
                                for(j = 0; j < lowGridSize*lowGridSize; ++j)
                                        sub_v3_v3v3(diffGrid[j].co, 
gridData[i][j].co, lowGridData[i][j].co);
 

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

Reply via email to