Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2005-10-02 22:27:14 +0400
committerMartin Poirier <theeth@yahoo.com>2005-10-02 22:27:14 +0400
commit90b5c5054c0d567558044eed4e52bef8ce809ee9 (patch)
tree0054ae0da0db7808ffc4843855e65d5c54befbd6 /source
parentcdb8700ddca08e4cce86f45129bc578e60c1e83f (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-xsource/blender/src/transform.c8
-rw-r--r--source/blender/src/view.c4
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);