Revision: 23257
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23257
Author:   joeedh
Date:     2009-09-15 20:51:33 +0200 (Tue, 15 Sep 2009)

Log Message:
-----------
mirror modifier with mirrorob set works properly (I hope) again

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h
    branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
    branches/bmesh/blender/source/blender/blenlib/intern/BLI_cellalloc.c

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h  
2009-09-15 18:01:18 UTC (rev 23256)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_utildefines.h  
2009-09-15 18:51:33 UTC (rev 23257)
@@ -250,7 +250,7 @@
 #define BM_INLINE static inline __attribute((always_inline))
 #endif
 
-#define BMEMSET(mem, val, size) {int _i; char *_c = mem; for (_i=0; _i<size; 
_i++) *_c++ = val;}
+#define BMEMSET(mem, val, size) {unsigned int _i; char *_c = (char*) mem; for 
(_i=0; _i<size; _i++) *_c++ = val;}
 
 #endif
 

Modified: 
branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c   
2009-09-15 18:01:18 UTC (rev 23256)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c   
2009-09-15 18:51:33 UTC (rev 23257)
@@ -121,12 +121,11 @@
        BMVert *v, **vtable, **verts=NULL;
        BMEdge *e, **etable, **edges=NULL;
        BMFace *f;
-       BMIter liter, iter;
+       BMIter liter;
        V_DECLARE(verts);
        V_DECLARE(edges);
-       void *tmp;
        int numTex, numCol;
-       int i, j, k, tot, totvert, totedge, totface;
+       int i, j, k, totvert, totedge, totface;
        
        if (em) bm = em->bm;
        else bm = BM_Make_Mesh(allocsize);
@@ -285,12 +284,10 @@
        float final_offset[4][4];
        float tmp_mat[4][4];
        float length = amd->length;
-       int count = amd->count;
-       int numVerts, numEdges, numFaces;
-       int maxVerts, maxEdges, maxFaces;
+       int count = amd->count, maxVerts;
        int finalVerts, finalEdges, finalFaces;
        int *indexMap = NULL;
-       DerivedMesh *result, *start_cap = NULL, *end_cap = NULL;
+       DerivedMesh *start_cap = NULL, *end_cap = NULL;
        MVert *src_mvert;
 
        /* need to avoid infinite recursion here */
@@ -411,7 +408,6 @@
                if (j == 0) {
                        BMOperator findop;
                        BMOIter oiter;
-                       BMIter iter;
                        BMVert *v, *v2;
                        BMHeader *h;
 
@@ -516,14 +512,14 @@
        DerivedMesh *result, *cddm;
        BMEditMesh *em;
        BMesh *bm;
-       BMOIter siter1, siter2;
+       BMOIter siter1;
        BMOperator op;
-       BMVert *v1, *v2;
+       BMVert *v1;
        int vector_size=0, a, b;
        bDeformGroup *def, *defb;
        bDeformGroup **vector_def = NULL;
        float mtx[4][4], imtx[4][4];
-       int i, j;
+       int j;
 
        cddm = dm; //copying shouldn't be necassary here, as all modifiers 
return CDDM's
        em = CDDM_To_BMesh(dm, NULL);
@@ -546,15 +542,27 @@
        }
 
        if (mmd->mirror_ob) {
-               float obinv[4][4];
+               float mtx2[4][4], vec[3];
                
-               Mat4Invert(obinv, mmd->mirror_ob->obmat);
-               Mat4MulMat4(mtx, ob->obmat, obinv);
-               Mat4Invert(imtx, mtx);
+               Mat4Invert(mtx2, mmd->mirror_ob->obmat);
+               Mat4Ortho(mtx2);
+               Mat4MulMat4(imtx, ob->obmat, mtx2);
+               Mat4Invert(mtx, imtx);
+               
+               /*this math here is probably stupid beyond all reason*/
+               VECCOPY(vec, mtx[3]);
+               VecMulf(vec, -1.0f);
+
+               Mat4One(imtx);
+               imtx[axis][axis] = -1.0f;
+               Mat4MulMat4(mtx2, imtx, mtx);
+
+               Mat4One(imtx);
+               VECCOPY(imtx[3], vec);
+               Mat4MulMat4(mtx, imtx, mtx2);
        } else {
                Mat4One(mtx);
-               mtx[axis][axis] = -1;
-               Mat4Invert(imtx, mtx);
+               mtx[axis][axis] = -1.0f;
        }
 
        BMO_InitOpf(bm, &op, "mirror geom=%avef mat=%m4 mergedist=%f axis=%d", 

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c       
2009-09-15 18:01:18 UTC (rev 23256)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c       
2009-09-15 18:51:33 UTC (rev 23257)
@@ -565,7 +565,7 @@
        double curt = PIL_check_seconds_timer();
 
        cgdm = getCCGDerivedMesh(ss, drawInteriorEdges, useSubsurfUv, dm);
-       result = CDDM_copy(cgdm, 0);
+       result = CDDM_copy(cgdm, 1);
 
        printf("subsurf conversion time: %.6lf\n", PIL_check_seconds_timer() - 
curt);
        

Modified: branches/bmesh/blender/source/blender/blenlib/intern/BLI_cellalloc.c
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/intern/BLI_cellalloc.c        
2009-09-15 18:01:18 UTC (rev 23256)
+++ branches/bmesh/blender/source/blender/blenlib/intern/BLI_cellalloc.c        
2009-09-15 18:51:33 UTC (rev 23257)
@@ -62,11 +62,16 @@
        int idcheck;
 } MemHeader;
 
+//#define USE_GUARDEDALLOC
+
 void *BLI_cellalloc_malloc(long size, char *tag)
 {
        MemHeader *memh;
        int slot = size + sizeof(MemHeader);
-
+       
+#ifdef USE_GUARDEDALLOC
+       return MEM_mallocN(size, tag);
+#endif
        if (!slot) 
                return NULL;
        
@@ -115,6 +120,10 @@
        MemHeader *memh = mem;
        int slot;
 
+#ifdef USE_GUARDEDALLOC
+       MEM_freeN(mem);
+       return;
+#endif
        if (!memh)
                return;
 


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

Reply via email to