[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32601] trunk/blender/source/blender/ editors/transform: bugfix [#24324] Wrong center for scaling Bezier Curve' s handles

Campbell Barton ideasman42 at gmail.com
Tue Oct 19 16:11:47 CEST 2010


Revision: 32601
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32601
Author:   campbellbarton
Date:     2010-10-19 16:11:46 +0200 (Tue, 19 Oct 2010)

Log Message:
-----------
bugfix [#24324] Wrong center for scaling Bezier Curve's handles
slight change to how transform calculates the center of each bezier handle selection.
- selecting both handles but not the knot now uses the mid point between the 2, before it used the handle.
- selecting 1 handle of a curve was still setting td->center to be the knot, now use the handles location only if its selected.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform_conversions.c
    trunk/blender/source/blender/editors/transform/transform_manipulator.c

Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c	2010-10-19 13:35:21 UTC (rev 32600)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c	2010-10-19 14:11:46 UTC (rev 32601)
@@ -1403,7 +1403,7 @@
 					  ) {
 						VECCOPY(td->iloc, bezt->vec[0]);
 						td->loc= bezt->vec[0];
-						VECCOPY(td->center, bezt->vec[1]);
+						VECCOPY(td->center, bezt->vec[(hide_handles || bezt->f2 & SELECT) ? 1:0]);
 						if (hide_handles) {
 							if(bezt->f2 & SELECT) td->flag= TD_SELECTED;
 							else td->flag= 0;
@@ -1462,7 +1462,7 @@
 					  ) {
 						VECCOPY(td->iloc, bezt->vec[2]);
 						td->loc= bezt->vec[2];
-						VECCOPY(td->center, bezt->vec[1]);
+						VECCOPY(td->center, bezt->vec[(hide_handles || bezt->f2 & SELECT) ? 1:2]);
 						if (hide_handles) {
 							if(bezt->f2 & SELECT) td->flag= TD_SELECTED;
 							else td->flag= 0;

Modified: trunk/blender/source/blender/editors/transform/transform_manipulator.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_manipulator.c	2010-10-19 13:35:21 UTC (rev 32600)
+++ trunk/blender/source/blender/editors/transform/transform_manipulator.c	2010-10-19 14:11:46 UTC (rev 32601)
@@ -308,7 +308,7 @@
 					while(a--) {
 						/* exceptions
 						 * if handles are hidden then only check the center points.
-						 * If 2 or more are selected then only use the center point too.
+						 * If the center knot is selected then only use this as the center point.
 						 */
 						if (cu->drawflag & CU_HIDE_HANDLES) {
 							if (bezt->f2 & SELECT) {
@@ -316,7 +316,7 @@
 								totsel++;
 							}
 						}
-						else if ( (bezt->f1 & SELECT) + (bezt->f2 & SELECT) + (bezt->f3 & SELECT) > SELECT ) {
+						else if (bezt->f2 & SELECT) {
 							calc_tw_center(scene, bezt->vec[1]);
 							totsel++;
 						}
@@ -325,10 +325,6 @@
 								calc_tw_center(scene, bezt->vec[0]);
 								totsel++;
 							}
-							if(bezt->f2) {
-								calc_tw_center(scene, bezt->vec[1]);
-								totsel++;
-							}
 							if(bezt->f3) {
 								calc_tw_center(scene, bezt->vec[2]);
 								totsel++;





More information about the Bf-blender-cvs mailing list