[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33340] trunk/blender/source/blender/ editors/curve/editcurve.c: Update nurb keyindex data when subdividing -- shape key data wouldn' t be lost anyway

Sergey Sharybin g.ulairi at gmail.com
Fri Nov 26 18:08:22 CET 2010


Revision: 33340
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33340
Author:   nazgul
Date:     2010-11-26 18:08:22 +0100 (Fri, 26 Nov 2010)

Log Message:
-----------
Update nurb keyindex data when subdividing -- shape key data wouldn't be lost anyway

Modified Paths:
--------------
    trunk/blender/source/blender/editors/curve/editcurve.c

Modified: trunk/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve.c	2010-11-26 17:07:31 UTC (rev 33339)
+++ trunk/blender/source/blender/editors/curve/editcurve.c	2010-11-26 17:08:22 UTC (rev 33340)
@@ -2597,7 +2597,7 @@
 static void subdividenurb(Object *obedit, int number_cuts)
 {
 	Curve *cu= obedit->data;
-	ListBase *editnurb= curve_get_editcurve(obedit);
+	EditNurb *editnurb= cu->editnurb;
 	Nurb *nu;
 	BezTriple *prevbezt, *bezt, *beztnew, *beztn;
 	BPoint *bp, *prevbp, *bpnew, *bpn;
@@ -2607,7 +2607,7 @@
 
    // printf("*** subdivideNurb: entering subdivide\n");
 
-	for(nu= editnurb->first; nu; nu= nu->next) {
+	for(nu= editnurb->nurbs.first; nu; nu= nu->next) {
 		amount= 0;
 		if(nu->type == CU_BEZIER) {
 		/* 
@@ -2649,6 +2649,7 @@
 				}
 				while(a--) {
 					memcpy(beztn, prevbezt, sizeof(BezTriple));
+					keyIndex_updateBezt(editnurb, prevbezt, beztn, 1, 1);
 					beztn++;
 
 					if( BEZSELECTED_HIDDENHANDLES(cu, prevbezt) && BEZSELECTED_HIDDENHANDLES(cu, bezt) ) {
@@ -2691,7 +2692,10 @@
 					bezt++;
 				}
 				/* last point */
-				if((nu->flagu & CU_NURB_CYCLIC)==0) memcpy(beztn, prevbezt, sizeof(BezTriple));
+				if((nu->flagu & CU_NURB_CYCLIC)==0) {
+					memcpy(beztn, prevbezt, sizeof(BezTriple));
+					keyIndex_updateBezt(editnurb, prevbezt, beztn, 1, 1);
+				}
 
 				MEM_freeN(nu->bezt);
 				nu->bezt= beztnew;
@@ -2742,6 +2746,7 @@
 				}
 				while(a--) {
 					memcpy(bpn, prevbp, sizeof(BPoint));
+					keyIndex_updateBP(editnurb, prevbp, bpn, 1, 1);
 					bpn++;
 
 					if( (bp->f1 & SELECT) && (prevbp->f1 & SELECT) ) {
@@ -2758,7 +2763,10 @@
 					prevbp= bp;
 					bp++;
 				}
-				if((nu->flagu & CU_NURB_CYCLIC)==0) memcpy(bpn, prevbp, sizeof(BPoint));	/* last point */
+				if((nu->flagu & CU_NURB_CYCLIC)==0) { /* last point */
+					memcpy(bpn, prevbp, sizeof(BPoint));
+					keyIndex_updateBP(editnurb, prevbp, bpn, 1, 1);
+				}
 
 				MEM_freeN(nu->bp);
 				nu->bp= bpnew;
@@ -2845,6 +2853,7 @@
 				for(a=0; a<nu->pntsv; a++) {
 					for(b=0; b<nu->pntsu; b++) {
 						*bpn= *bp;
+						keyIndex_updateBP(editnurb, bp, bpn, 1, 1);
 						bpn++; 
 						bp++;
 						if(b<nu->pntsu-1) {
@@ -2901,6 +2910,7 @@
 					for(a=0; a<nu->pntsv; a++) {
 						for(b=0; b<nu->pntsu; b++) {
 							*bpn= *bp;
+							keyIndex_updateBP(editnurb, bp, bpn, 1, 1);
 							bpn++;
 							bp++;
 						}
@@ -2947,6 +2957,7 @@
 						for(a=0; a<nu->pntsv; a++) {
 							for(b=0; b<nu->pntsu; b++) {
 								*bpn= *bp;
+								keyIndex_updateBP(editnurb, bp, bpn, 1, 1);
 								bpn++; 
 								bp++;
 								if( (b<nu->pntsu-1) && usel[b]==nu->pntsv && usel[b+1]==nu->pntsv ) {





More information about the Bf-blender-cvs mailing list