[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48234] trunk/blender/source/blender/ editors/curve/editcurve.c: Fix #31909: "Make Segment" on path-curves gives wrong result
Sergey Sharybin
sergey.vfx at gmail.com
Sun Jun 24 13:27:39 CEST 2012
Revision: 48234
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48234
Author: nazgul
Date: 2012-06-24 11:27:28 +0000 (Sun, 24 Jun 2012)
Log Message:
-----------
Fix #31909: "Make Segment" on path-curves gives wrong result
In fact fixed in easiest way -- always re-calculate knots array
on topology changes.
After some discussion with Ton we agreed on that having manually
editable knots is not intuitive and user should only define
cyclic/endpoints flags and knots would be re-calculated based
on this flags.
This means that it's unnecessary to have special logic for knots
manipulating in some topology changing tools and they could just
re-calculate knots for the whole nurb, without worrying that knots
could have been manually edited.
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 2012-06-24 10:49:22 UTC (rev 48233)
+++ trunk/blender/source/blender/editors/curve/editcurve.c 2012-06-24 11:27:28 UTC (rev 48234)
@@ -3937,7 +3937,6 @@
ListBase *nubase = object_editcurve_get(obedit);
Nurb *nu, *nu1 = NULL, *nu2 = NULL;
BPoint *bp;
- float *fp, offset;
int a, ok = 0;
/* first decide if this is a surface merge! */
@@ -4053,25 +4052,12 @@
/* now join the knots */
if (nu1->type == CU_NURBS) {
- if (nu1->knotsu == NULL) {
- BKE_nurb_knot_calc_u(nu1);
- }
- else {
- fp = MEM_mallocN(sizeof(float) * KNOTSU(nu1), "addsegment3");
- memcpy(fp, nu1->knotsu, sizeof(float) * a);
+ if (nu1->knotsu != NULL) {
MEM_freeN(nu1->knotsu);
- nu1->knotsu = fp;
-
-
- offset = nu1->knotsu[a - 1] + 1.0f;
- fp = nu1->knotsu + a;
- for (a = 0; a < nu2->pntsu; a++, fp++) {
- if (nu2->knotsu)
- *fp = offset + nu2->knotsu[a + 1];
- else
- *fp = offset;
- }
+ nu1->knotsu = NULL;
}
+
+ BKE_nurb_knot_calc_u(nu1);
}
BKE_nurb_free(nu2); nu2 = NULL;
}
More information about the Bf-blender-cvs
mailing list