diff options
author | Ton Roosendaal <ton@blender.org> | 2007-03-24 14:56:10 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2007-03-24 14:56:10 +0300 |
commit | 796c87e86950c9c456871b833d7f50fa19b0645d (patch) | |
tree | 705f5c2b8206af54f42ad5694911a402c5dc8ced /source/blender/src | |
parent | 1dcb99dce3c7049b0adf479ba22eae30536db8e8 (diff) |
Bugfix #6435
New option "rotate around selection" failed in editmode, when nothing was
selected.
Function calculateCenterMedian() missed that case.
Also added some zero initializing in code.
Diffstat (limited to 'source/blender/src')
-rw-r--r-- | source/blender/src/space.c | 2 | ||||
-rwxr-xr-x | source/blender/src/transform_generics.c | 8 | ||||
-rw-r--r-- | source/blender/src/view.c | 2 |
3 files changed, 9 insertions, 3 deletions
diff --git a/source/blender/src/space.c b/source/blender/src/space.c index 9e3cb9a6520..b33b0524bbf 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -3261,7 +3261,7 @@ void drawinfospace(ScrArea *sa, void *spacedata) uiDefButBitI(block, TOG, USER_ORBIT_SELECTION, B_DRAWINFO, "Around Selection", (xpos+edgsp+mpref+(2*spref)+(3*midsp)+(mpref/2)),y2,(mpref/2),buth, &(U.uiflag), 0, 0, 0, 0, - "Keep the center of selection in place when orbiting the views"); + "Use selection as the orbiting center"); uiBlockEndAlign(block); diff --git a/source/blender/src/transform_generics.c b/source/blender/src/transform_generics.c index 10e1e8a704c..d445603e1ed 100755 --- a/source/blender/src/transform_generics.c +++ b/source/blender/src/transform_generics.c @@ -482,6 +482,10 @@ void initTrans (TransInfo *t) t->vec[1] = t->vec[2] = 0.0f; + t->center[0] = + t->center[1] = + t->center[2] = 0.0f; + Mat3One(t->mat); t->spacetype = curarea->spacetype; @@ -678,6 +682,7 @@ void calculateCenterMedian(TransInfo *t) { float partial[3] = {0.0f, 0.0f, 0.0f}; int i; + for(i = 0; i < t->total; i++) { if (t->data[i].flag & TD_SELECTED) { VecAddf(partial, partial, t->data[i].center); @@ -690,7 +695,8 @@ void calculateCenterMedian(TransInfo *t) break; } } - VecMulf(partial, 1.0f / i); + if(i) + VecMulf(partial, 1.0f / i); VECCOPY(t->center, partial); calculateCenter2D(t); diff --git a/source/blender/src/view.c b/source/blender/src/view.c index a5f8015f9cc..ad8aa2bd38a 100644 --- a/source/blender/src/view.c +++ b/source/blender/src/view.c @@ -534,7 +534,7 @@ void viewmove(int mode) Object *ob = OBACT; float firstvec[3], newvec[3], dvec[3]; float reverse, oldquat[4], q1[4], si, phi, dist0; - float ofs[3], obofs[3]; + float ofs[3], obofs[3]= {0.0f, 0.0f, 0.0f}; int firsttime=1; short mvalball[2], mval[2], mvalo[2]; short use_sel = 0; |