Revision: 50259
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50259
Author:   campbellbarton
Date:     2012-08-29 07:07:18 +0000 (Wed, 29 Aug 2012)
Log Message:
-----------
code cleanup: move static mball vars into their own struct, wasnt very clear 
from reading code what was defined in the function.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mball.c

Modified: trunk/blender/source/blender/blenkernel/intern/mball.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mball.c      2012-08-29 
00:53:29 UTC (rev 50258)
+++ trunk/blender/source/blender/blenkernel/intern/mball.c      2012-08-29 
07:07:18 UTC (rev 50259)
@@ -163,11 +163,13 @@
                      float (*function)(float, float, float), float p[3], 
MetaBall *mb, int f);
 
 /* Global variables */
+static struct {
+       float thresh;
+       int totelem;
+       MetaElem **mainb;
+       octal_tree *metaball_tree;
+} G_mb = {0};
 
-static float thresh = 0.6f;
-static int totelem = 0;
-static MetaElem **mainb;
-static octal_tree *metaball_tree = NULL;
 /* Functions */
 
 void BKE_mball_unlink(MetaBall *mb)
@@ -523,7 +525,7 @@
        char basisname[MAX_ID_NAME], obname[MAX_ID_NAME];
 
        BLI_split_name_num(basisname, &basisnr, basis->id.name + 2, '.');
-       totelem = 0;
+       G_mb.totelem = 0;
 
        /* XXX recursion check, see scene.c, just too simple code this 
BKE_scene_base_iter_next() */
        if (F_ERROR == BKE_scene_base_iter_next(&sce_iter, 0, NULL, NULL))
@@ -564,9 +566,10 @@
                                }
                        }
                        
-                       while (ml) {
-                               if (!(ml->flag & MB_HIDE)) totelem++;
-                               ml = ml->next;
+                       for ( ; ml; ml = ml->next) {
+                               if (!(ml->flag & MB_HIDE)) {
+                                       G_mb.totelem++;
+                               }
                        }
                }
        }
@@ -771,27 +774,27 @@
        float dens = 0;
        int a;
        
-       if (totelem > 1) {
-               node = find_metaball_octal_node(metaball_tree->first, x, y, z, 
metaball_tree->depth);
+       if (G_mb.totelem > 1) {
+               node = find_metaball_octal_node(G_mb.metaball_tree->first, x, 
y, z, G_mb.metaball_tree->depth);
                if (node) {
                        for (ml_p = node->elems.first; ml_p; ml_p = ml_p->next) 
{
                                dens += densfunc(ml_p->ml, x, y, z);
                        }
 
-                       dens += -0.5f * (metaball_tree->pos - node->pos);
-                       dens +=  0.5f * (metaball_tree->neg - node->neg);
+                       dens += -0.5f * (G_mb.metaball_tree->pos - node->pos);
+                       dens +=  0.5f * (G_mb.metaball_tree->neg - node->neg);
                }
                else {
-                       for (a = 0; a < totelem; a++) {
-                               dens += densfunc(mainb[a], x, y, z);
+                       for (a = 0; a < G_mb.totelem; a++) {
+                               dens += densfunc(G_mb.mainb[a], x, y, z);
                        }
                }
        }
        else {
-               dens += densfunc(mainb[0], x, y, z);
+               dens += densfunc(G_mb.mainb[0], x, y, z);
        }
 
-       return thresh - dens;
+       return G_mb.thresh - dens;
 }
 
 /* ******************************************** */
@@ -1493,7 +1496,7 @@
        MetaElem *ml;
        float f = 0.0f;
 
-       ml = mainb[a];
+       ml = G_mb.mainb[a];
        f = 1.0 - (mb->thresh / ml->s);
 
        /* Skip, when Stiffness of MetaElement is too small ... MetaElement 
can't be
@@ -1619,7 +1622,7 @@
        mbproc->edges = MEM_callocN(2 * HASHSIZE * sizeof(EDGELIST *), 
"mbproc->edges");
        makecubetable();
 
-       for (a = 0; a < totelem; a++) {
+       for (a = 0; a < G_mb.totelem; a++) {
 
                /* try to find 8 points on the surface for each MetaElem */
                find_first_points(mbproc, mb, a);       
@@ -1712,7 +1715,7 @@
                                        ml_count++;
                                        ml = ml->next;
                                }
-                               totelem -= ml_count;
+                               G_mb.totelem -= ml_count;
                        }
                        else {
                                while (ml) {
@@ -1741,9 +1744,9 @@
                                                mult_m4_m4m4(temp1, temp2, 
temp3);
 
                                                /* make a copy because of 
duplicates */
-                                               mainb[a] = 
new_pgn_element(sizeof(MetaElem));
-                                               *(mainb[a]) = *ml;
-                                               mainb[a]->bb = 
new_pgn_element(sizeof(BoundBox));
+                                               G_mb.mainb[a] = 
new_pgn_element(sizeof(MetaElem));
+                                               *(G_mb.mainb[a]) = *ml;
+                                               G_mb.mainb[a]->bb = 
new_pgn_element(sizeof(BoundBox));
 
                                                mat = new_pgn_element(4 * 4 * 
sizeof(float));
                                                imat = new_pgn_element(4 * 4 * 
sizeof(float));
@@ -1756,70 +1759,70 @@
 
                                                invert_m4_m4(imat, mat);
 
-                                               mainb[a]->rad2 = ml->rad * 
ml->rad;
+                                               G_mb.mainb[a]->rad2 = ml->rad * 
ml->rad;
 
-                                               mainb[a]->mat = (float *) mat;
-                                               mainb[a]->imat = (float *) imat;
+                                               G_mb.mainb[a]->mat = (float *) 
mat;
+                                               G_mb.mainb[a]->imat = (float *) 
imat;
 
                                                /* untransformed Bounding Box 
of MetaElem */
                                                /* 0 */
-                                               mainb[a]->bb->vec[0][0] = 
-ml->expx;
-                                               mainb[a]->bb->vec[0][1] = 
-ml->expy;
-                                               mainb[a]->bb->vec[0][2] = 
-ml->expz;
+                                               G_mb.mainb[a]->bb->vec[0][0] = 
-ml->expx;
+                                               G_mb.mainb[a]->bb->vec[0][1] = 
-ml->expy;
+                                               G_mb.mainb[a]->bb->vec[0][2] = 
-ml->expz;
                                                /* 1 */
-                                               mainb[a]->bb->vec[1][0] =  
ml->expx;
-                                               mainb[a]->bb->vec[1][1] = 
-ml->expy;
-                                               mainb[a]->bb->vec[1][2] = 
-ml->expz;
+                                               G_mb.mainb[a]->bb->vec[1][0] =  
ml->expx;
+                                               G_mb.mainb[a]->bb->vec[1][1] = 
-ml->expy;
+                                               G_mb.mainb[a]->bb->vec[1][2] = 
-ml->expz;
                                                /* 2 */
-                                               mainb[a]->bb->vec[2][0] =  
ml->expx;
-                                               mainb[a]->bb->vec[2][1] =  
ml->expy;
-                                               mainb[a]->bb->vec[2][2] = 
-ml->expz;
+                                               G_mb.mainb[a]->bb->vec[2][0] =  
ml->expx;
+                                               G_mb.mainb[a]->bb->vec[2][1] =  
ml->expy;
+                                               G_mb.mainb[a]->bb->vec[2][2] = 
-ml->expz;
                                                /* 3 */
-                                               mainb[a]->bb->vec[3][0] = 
-ml->expx;
-                                               mainb[a]->bb->vec[3][1] =  
ml->expy;
-                                               mainb[a]->bb->vec[3][2] = 
-ml->expz;
+                                               G_mb.mainb[a]->bb->vec[3][0] = 
-ml->expx;
+                                               G_mb.mainb[a]->bb->vec[3][1] =  
ml->expy;
+                                               G_mb.mainb[a]->bb->vec[3][2] = 
-ml->expz;
                                                /* 4 */
-                                               mainb[a]->bb->vec[4][0] = 
-ml->expx;
-                                               mainb[a]->bb->vec[4][1] = 
-ml->expy;
-                                               mainb[a]->bb->vec[4][2] =  
ml->expz;
+                                               G_mb.mainb[a]->bb->vec[4][0] = 
-ml->expx;
+                                               G_mb.mainb[a]->bb->vec[4][1] = 
-ml->expy;
+                                               G_mb.mainb[a]->bb->vec[4][2] =  
ml->expz;
                                                /* 5 */
-                                               mainb[a]->bb->vec[5][0] =  
ml->expx;
-                                               mainb[a]->bb->vec[5][1] = 
-ml->expy;
-                                               mainb[a]->bb->vec[5][2] =  
ml->expz;
+                                               G_mb.mainb[a]->bb->vec[5][0] =  
ml->expx;
+                                               G_mb.mainb[a]->bb->vec[5][1] = 
-ml->expy;
+                                               G_mb.mainb[a]->bb->vec[5][2] =  
ml->expz;
                                                /* 6 */
-                                               mainb[a]->bb->vec[6][0] =  
ml->expx;
-                                               mainb[a]->bb->vec[6][1] =  
ml->expy;
-                                               mainb[a]->bb->vec[6][2] =  
ml->expz;
+                                               G_mb.mainb[a]->bb->vec[6][0] =  
ml->expx;
+                                               G_mb.mainb[a]->bb->vec[6][1] =  
ml->expy;
+                                               G_mb.mainb[a]->bb->vec[6][2] =  
ml->expz;
                                                /* 7 */
-                                               mainb[a]->bb->vec[7][0] = 
-ml->expx;
-                                               mainb[a]->bb->vec[7][1] =  
ml->expy;
-                                               mainb[a]->bb->vec[7][2] =  
ml->expz;
+                                               G_mb.mainb[a]->bb->vec[7][0] = 
-ml->expx;
+                                               G_mb.mainb[a]->bb->vec[7][1] =  
ml->expy;
+                                               G_mb.mainb[a]->bb->vec[7][2] =  
ml->expz;
 
                                                /* transformation of Metalem bb 
*/
                                                for (i = 0; i < 8; i++)
-                                                       mul_m4_v3((float 
(*)[4])mat, mainb[a]->bb->vec[i]);
+                                                       mul_m4_v3((float 
(*)[4])mat, G_mb.mainb[a]->bb->vec[i]);
 
                                                /* find max and min of 
transformed bb */
                                                for (i = 0; i < 8; i++) {
                                                        /* find maximums */
-                                                       if 
(mainb[a]->bb->vec[i][0] > max_x) max_x = mainb[a]->bb->vec[i][0];
-                                                       if 
(mainb[a]->bb->vec[i][1] > max_y) max_y = mainb[a]->bb->vec[i][1];
-                                                       if 
(mainb[a]->bb->vec[i][2] > max_z) max_z = mainb[a]->bb->vec[i][2];
+                                                       if 
(G_mb.mainb[a]->bb->vec[i][0] > max_x) max_x = G_mb.mainb[a]->bb->vec[i][0];
+                                                       if 
(G_mb.mainb[a]->bb->vec[i][1] > max_y) max_y = G_mb.mainb[a]->bb->vec[i][1];
+                                                       if 
(G_mb.mainb[a]->bb->vec[i][2] > max_z) max_z = G_mb.mainb[a]->bb->vec[i][2];
                                                        /* find  minimums */
-                                                       if 
(mainb[a]->bb->vec[i][0] < min_x) min_x = mainb[a]->bb->vec[i][0];
-                                                       if 
(mainb[a]->bb->vec[i][1] < min_y) min_y = mainb[a]->bb->vec[i][1];
-                                                       if 
(mainb[a]->bb->vec[i][2] < min_z) min_z = mainb[a]->bb->vec[i][2];
+                                                       if 
(G_mb.mainb[a]->bb->vec[i][0] < min_x) min_x = G_mb.mainb[a]->bb->vec[i][0];
+                                                       if 
(G_mb.mainb[a]->bb->vec[i][1] < min_y) min_y = G_mb.mainb[a]->bb->vec[i][1];
+                                                       if 
(G_mb.mainb[a]->bb->vec[i][2] < min_z) min_z = G_mb.mainb[a]->bb->vec[i][2];
                                                }
                                        
                                                /* create "new" bb, only point 
0 and 6, which are
                                                 * necessary for octal tree 
filling */
-                                               mainb[a]->bb->vec[0][0] = min_x 
- ml->rad;
-                                               mainb[a]->bb->vec[0][1] = min_y 
- ml->rad;
-                                               mainb[a]->bb->vec[0][2] = min_z 
- ml->rad;
+                                               G_mb.mainb[a]->bb->vec[0][0] = 
min_x - ml->rad;
+                                               G_mb.mainb[a]->bb->vec[0][1] = 
min_y - ml->rad;
+                                               G_mb.mainb[a]->bb->vec[0][2] = 
min_z - ml->rad;
 
-                                               mainb[a]->bb->vec[6][0] = max_x 
+ ml->rad;
-                                               mainb[a]->bb->vec[6][1] = max_y 
+ ml->rad;
-                                               mainb[a]->bb->vec[6][2] = max_z 
+ ml->rad;
+                                               G_mb.mainb[a]->bb->vec[6][0] = 
max_x + ml->rad;
+                                               G_mb.mainb[a]->bb->vec[6][1] = 
max_y + ml->rad;
+                                               G_mb.mainb[a]->bb->vec[6][2] = 
max_z + ml->rad;
 
                                                a++;
                                        }
@@ -1832,13 +1835,13 @@
        
        /* totsize (= 'manhattan' radius) */
        totsize = 0.0;
-       for (a = 0; a < totelem; a++) {
+       for (a = 0; a < G_mb.totelem; a++) {
                
-               vec[0] = mainb[a]->x + mainb[a]->rad + mainb[a]->expx;
-               vec[1] = mainb[a]->y + mainb[a]->rad + mainb[a]->expy;
-               vec[2] = mainb[a]->z + mainb[a]->rad + mainb[a]->expz;
+               vec[0] = G_mb.mainb[a]->x + G_mb.mainb[a]->rad + 
G_mb.mainb[a]->expx;
+               vec[1] = G_mb.mainb[a]->y + G_mb.mainb[a]->rad + 
G_mb.mainb[a]->expy;
+               vec[2] = G_mb.mainb[a]->z + G_mb.mainb[a]->rad + 
G_mb.mainb[a]->expz;
 
-               calc_mballco(mainb[a], vec);
+               calc_mballco(G_mb.mainb[a], vec);
        
                size = fabsf(vec[0]);
                if (size > totsize) totsize = size;
@@ -1847,11 +1850,11 @@
                size = fabsf(vec[2]);
                if (size > totsize) totsize = size;
 
-               vec[0] = mainb[a]->x - mainb[a]->rad;
-               vec[1] = mainb[a]->y - mainb[a]->rad;
-               vec[2] = mainb[a]->z - mainb[a]->rad;
+               vec[0] = G_mb.mainb[a]->x - G_mb.mainb[a]->rad;
+               vec[1] = G_mb.mainb[a]->y - G_mb.mainb[a]->rad;
+               vec[2] = G_mb.mainb[a]->z - G_mb.mainb[a]->rad;
                                
-               calc_mballco(mainb[a], vec);
+               calc_mballco(G_mb.mainb[a], vec);
        
                size = fabsf(vec[0]);
                if (size > totsize) totsize = size;
@@ -1861,8 +1864,8 @@
                if (size > totsize) totsize = size;
        }
 
-       for (a = 0; a < totelem; a++) {
-               thresh += densfunc(mainb[a], 2.0f * totsize, 2.0f * totsize, 
2.0f * totsize);
+       for (a = 0; a < G_mb.totelem; a++) {
+               G_mb.thresh += densfunc(G_mb.mainb[a], 2.0f * totsize, 2.0f * 
totsize, 2.0f * totsize);
        }
 
        return totsize;
@@ -2178,13 +2181,13 @@
        float size[3];
        int a;
        
-       metaball_tree = MEM_mallocN(sizeof(octal_tree), "metaball_octal_tree");
-       metaball_tree->first = node = MEM_mallocN(sizeof(octal_node), 
"metaball_octal_node");
+       G_mb.metaball_tree = MEM_mallocN(sizeof(octal_tree), 
"metaball_octal_tree");
+       G_mb.metaball_tree->first = node = MEM_mallocN(sizeof(octal_node), 
"metaball_octal_node");
        /* maximal depth of octree */
-       metaball_tree->depth = depth;
+       G_mb.metaball_tree->depth = depth;
 
-       metaball_tree->neg = node->neg = 0;
-       metaball_tree->pos = node->pos = 0;

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to