Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2010-11-26 20:08:22 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2010-11-26 20:08:22 +0300
commitfb42188c18097e57596c53191cfa923d916dba6c (patch)
tree17077f1128a540ef52c3dbb35c1d266bcca3e852 /source
parentcfd3b11630161a802233b905f7076899888c6fe3 (diff)
Update nurb keyindex data when subdividing -- shape key data wouldn't be lost anyway
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/curve/editcurve.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index 63e5c13a485..b35657cb266 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -2597,7 +2597,7 @@ void CURVE_OT_select_inverse(wmOperatorType *ot)
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 @@ static void subdividenurb(Object *obedit, int number_cuts)
// 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 @@ static void subdividenurb(Object *obedit, int number_cuts)
}
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 @@ static void subdividenurb(Object *obedit, int number_cuts)
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 @@ static void subdividenurb(Object *obedit, int number_cuts)
}
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 @@ static void subdividenurb(Object *obedit, int number_cuts)
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 @@ static void subdividenurb(Object *obedit, int number_cuts)
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 @@ static void subdividenurb(Object *obedit, int number_cuts)
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 @@ static void subdividenurb(Object *obedit, int number_cuts)
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 ) {