diff options
author | Martin Poirier <theeth@yahoo.com> | 2005-10-02 22:27:14 +0400 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2005-10-02 22:27:14 +0400 |
commit | 90b5c5054c0d567558044eed4e52bef8ce809ee9 (patch) | |
tree | 0054ae0da0db7808ffc4843855e65d5c54befbd6 /source | |
parent | cdb8700ddca08e4cce86f45129bc578e60c1e83f (diff) |
Fixing bones grab in "pose" transform. Bug #3030: http://projects.blender.org/tracker/?func=detail&atid=125&aid=3030&group_id=9
It didn't do initgrabz correctly.
Diffstat (limited to 'source')
-rwxr-xr-x | source/blender/src/transform.c | 8 | ||||
-rw-r--r-- | source/blender/src/view.c | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/source/blender/src/transform.c b/source/blender/src/transform.c index 39fc57dc4e3..dbcc1743806 100755 --- a/source/blender/src/transform.c +++ b/source/blender/src/transform.c @@ -201,8 +201,9 @@ void setTransformViewMatrices(TransInfo *t) void convertViewVec(TransInfo *t, float *vec, short dx, short dy) { - if (t->spacetype==SPACE_VIEW3D) + if (t->spacetype==SPACE_VIEW3D) { window_to_3d(vec, dx, dy); + } else if(t->spacetype==SPACE_IMAGE) { float divx, divy, aspx, aspy; @@ -1903,11 +1904,12 @@ void initTranslation(TransInfo *t) if(t->spacetype == SPACE_VIEW3D) { /* initgrabz() defines a factor for perspective depth correction, used in window_to_3d() */ - if(G.obedit) { + if(t->flag & (T_EDIT|T_POSE)) { + Object *ob= G.obedit?G.obedit:t->poseobj; float vec[3]; VECCOPY(vec, t->center); - Mat4MulVecfl(G.obedit->obmat, vec); + Mat4MulVecfl(ob->obmat, vec); initgrabz(vec[0], vec[1], vec[2]); } else initgrabz(t->center[0], t->center[1], t->center[2]); diff --git a/source/blender/src/view.c b/source/blender/src/view.c index 342305e215b..ee444b45586 100644 --- a/source/blender/src/view.c +++ b/source/blender/src/view.c @@ -154,10 +154,10 @@ void window_to_3d(float *vec, short mx, short my) { /* always call initzgrab */ float dx, dy; - + dx= 2.0f*mx*zfac/curarea->winx; dy= 2.0f*my*zfac/curarea->winy; - + vec[0]= (G.vd->persinv[0][0]*dx + G.vd->persinv[1][0]*dy); vec[1]= (G.vd->persinv[0][1]*dx + G.vd->persinv[1][1]*dy); vec[2]= (G.vd->persinv[0][2]*dx + G.vd->persinv[1][2]*dy); |