+ if (!shiftDown)
+ pl->Translate(delta);
+ else
+ {
+ // Move selected point by itself (if hit)
+ if (pl->hitPoint[0])
+ {
+ point.b = pl->points[pl->ptNum].b;
+ pl->points[pl->ptNum] = point;
+ }
+ else if (pl->hitObject)
+ {
+ // move arc radius, or maybe move line segment? :-/
+ int ptNum = pl->ptNum;
+ Arc a = Geometry::FindArcForThreePoints(pl->points[ptNum], pl->points[ptNum + 1], point);
+ pl->points[ptNum].b = Geometry::Pack(&a);
+
+ // This doesn't quite get there... Maybe < 0.001?
+ if (fabs(pl->points[ptNum].b) < EPSILON)
+ pl->points[ptNum].b = 0;
+ }
+ }