Revision: 31242
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31242
Author:   nazgul
Date:     2010-08-11 17:37:24 +0200 (Wed, 11 Aug 2010)

Log Message:
-----------
- Fix a crash on duplicate NURBS
- Use new mat[4][4] in add_nurbs_primitive to position nurbs objects

Merged rev26359 from nurbs25 branch

Revision Links:
--------------
    
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26359

Modified Paths:
--------------
    branches/nurbs-merge/source/blender/blenkernel/intern/displist.c
    branches/nurbs-merge/source/blender/editors/curve/editcurve.c

Modified: branches/nurbs-merge/source/blender/blenkernel/intern/displist.c
===================================================================
--- branches/nurbs-merge/source/blender/blenkernel/intern/displist.c    
2010-08-11 15:37:09 UTC (rev 31241)
+++ branches/nurbs-merge/source/blender/blenkernel/intern/displist.c    
2010-08-11 15:37:24 UTC (rev 31242)
@@ -1649,6 +1649,10 @@
                                makeNurbcurve(nu, data, NULL, NULL, NULL, 
nu->resolu, 3*sizeof(float));
                        }
                        else {
+                               /* Maybe this should be elsewhere */
+                               if(!nu->nurbanaPtr)
+                                       nurbanaInit(nu);
+
                                len= NRB_getNumTessPoints(nu->nurbanaPtr);
                                
                                dl= MEM_callocN(sizeof(DispList), 
"makeDispListsurf");

Modified: branches/nurbs-merge/source/blender/editors/curve/editcurve.c
===================================================================
--- branches/nurbs-merge/source/blender/editors/curve/editcurve.c       
2010-08-11 15:37:09 UTC (rev 31241)
+++ branches/nurbs-merge/source/blender/editors/curve/editcurve.c       
2010-08-11 15:37:24 UTC (rev 31242)
@@ -1756,7 +1756,7 @@
 
                                        newnu = 
(Nurb*)MEM_mallocN(sizeof(Nurb), "adduplicateN5");
                                        memcpy(newnu, nu, sizeof(Nurb));
-                                       newnu->nurbanaPtr = NULL; /* needed to 
ensure new nurbana object gets created */
+                                       newnu->nurbanaPtr = NULL; /* needed to 
ensure new nurbana object gets created. FIXME eman - should we always create 
nurbana object here*/
                                        BLI_addtail(editnurb, newnu);
                                        set_actNurb(obedit, newnu);
                                        newnu->pntsu= newu;
@@ -5960,20 +5960,19 @@
 
        return OPERATOR_FINISHED;
 }
-/*void adjustNurbPoints(Nurb *nu, nbReal cent[], nbReal mat[][3]) {
+void adjustNurbPoints(Nurb *nu,  float mat[4][4]) {
        int lengthU = nu -> pntsu;
        int lengthV = nu -> pntsv;
        int u, v;
        BPoint *ctlPt = nu -> bp;
        for (v = 0; v < lengthV; v++)
                for (u = 0; u < lengthU; u++) {
-                       VECAPN(ctlPt -> vec, cent);
-                       mul_m3_v3(mat, ctlPt -> vec);
+                       mul_m4_v3(mat, ctlPt -> vec);
                        ctlPt -> f1 |= SELECT;
                        ctlPt++;
                }
-} //FIXME eman move?
-*/
+} 
+
 /************ add primitive, used by object/ module ****************/
 Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname)
 {
@@ -6049,7 +6048,7 @@
                else {
                        nurbanaInit(nu);
                        NRB_CreatePrimitive(nu -> nurbanaPtr, 0);
-//                     adjustNurbPoints(nu, cent, imat);
+                       adjustNurbPoints(nu, mat);
 
                }
 
@@ -6133,7 +6132,7 @@
                else if( cutype==CU_NURBS ) {  /* nurb */
                        nurbanaInit(nu);
                        NRB_CreatePrimitive(nu->nurbanaPtr, 2);
-//                     adjustNurbPoints(nu, cent, imat);
+                       adjustNurbPoints(nu, mat);
                }
                break;
        case CU_PRIM_PATCH:     /* 4x4 patch */
@@ -6145,7 +6144,7 @@
                                
                        nurbanaInit(nu);
                        NRB_CreatePrimitive(nu -> nurbanaPtr, 1);
-       //              adjustNurbPoints(nu, cent, imat);
+                       adjustNurbPoints(nu, mat);
                }
                break;
        case CU_PRIM_TUBE:      /* tube */
@@ -6159,7 +6158,7 @@
 
                        nurbanaInit(nu);
                        NRB_CreatePrimitive(nu->nurbanaPtr, 3);
-///                    adjustNurbPoints(nu, cent, imat);
+                       adjustNurbPoints(nu, mat);
                }
                break;
        case CU_PRIM_SPHERE:    /* sphere */
@@ -6174,7 +6173,7 @@
 
                        nurbanaInit(nu);
                        NRB_CreatePrimitive(nu->nurbanaPtr, 5);
-//                     adjustNurbPoints(nu, cent, imat);
+                       adjustNurbPoints(nu, mat);
     }
                break;
        case CU_PRIM_DONUT:     /* donut */
@@ -6189,7 +6188,7 @@
 
                        nurbanaInit(nu);
                        NRB_CreatePrimitive(nu->nurbanaPtr, 4);
-                       //adjustNurbPoints(nu, cent, imat);
+                       adjustNurbPoints(nu, mat);
                }
                break;
        }


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

Reply via email to