[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11449] branches/ndof/source/blender/src: transform mode commit
JLuc Peuriere
jlp at nerim.net
Tue Jul 31 19:45:26 CEST 2007
Revision: 11449
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11449
Author: lukep
Date: 2007-07-31 19:45:26 +0200 (Tue, 31 Jul 2007)
Log Message:
-----------
transform mode commit
you can now translate or rotate a selected object
in the third method. either in object or edit mode.
Note : the method is not ideal, as we create a full
transform loop for each component of the transform.
However it is this way handled in same way as other
means of input
Modified Paths:
--------------
branches/ndof/source/blender/src/space.c
branches/ndof/source/blender/src/transform.c
branches/ndof/source/blender/src/view.c
Modified: branches/ndof/source/blender/src/space.c
===================================================================
--- branches/ndof/source/blender/src/space.c 2007-07-31 16:56:08 UTC (rev 11448)
+++ branches/ndof/source/blender/src/space.c 2007-07-31 17:45:26 UTC (rev 11449)
@@ -1573,7 +1573,9 @@
} else if (G.vd->ndofmode == 1) {
viewmoveNDOFfly(1);
} else {
- ;
+ if (OBACT) {
+ ndof_transform();
+ }
}
break;
Modified: branches/ndof/source/blender/src/transform.c
===================================================================
--- branches/ndof/source/blender/src/transform.c 2007-07-31 16:56:08 UTC (rev 11448)
+++ branches/ndof/source/blender/src/transform.c 2007-07-31 17:45:26 UTC (rev 11449)
@@ -3106,4 +3106,98 @@
Trans.undostr= str;
}
+void ndof_do_transform(float *fval)
+{
+ char str[200];
+ float fvec[3] = {0.0,0.0,0.0};
+ char change = 0;
+
+// fprintf(stderr,"passing here %f %f %f \n",fval[3],fval[4],fval[5]);
+
+ if (fval[3] != 0.0 ) {
+ fvec[0] = 1.0;
+ initTransform(TFM_ROTATION, CTX_NONE);
+ applyRotation(&Trans, fval[3], fvec);
+ recalcData(&Trans);
+ change =1;
+ fvec[0] = 0.0;
+ drawSnapping(&Trans);
+ /* free data */
+ postTrans(&Trans);
+
+ /* aftertrans does insert ipos and action channels, and clears base flags, doesnt read transdata */
+ special_aftertrans_update(&Trans);
+
+ }
+ if (fval[4] != 0.0 ) {
+ fvec[1] = 1.0;
+ initTransform(TFM_ROTATION, CTX_NONE);
+ applyRotation(&Trans, fval[4], fvec);
+ recalcData(&Trans);
+ change =1;
+ fvec[1] = 0.0;
+ drawSnapping(&Trans);
+ /* free data */
+ postTrans(&Trans);
+
+ /* aftertrans does insert ipos and action channels, and clears base flags, doesnt read transdata */
+ special_aftertrans_update(&Trans);
+
+ }
+ if (fval[5] != 0.0 ) {
+ fvec[2] = 1.0;
+ initTransform(TFM_ROTATION, CTX_NONE);
+ applyRotation(&Trans, fval[5], fvec);
+ recalcData(&Trans);
+ change =1;
+ fvec[2] = 0.0;
+ drawSnapping(&Trans);
+ /* free data */
+ postTrans(&Trans);
+
+ /* aftertrans does insert ipos and action channels, and clears base flags, doesnt read transdata */
+ special_aftertrans_update(&Trans);
+
+ }
+
+
+ if ((fval[0] != 0.0 )|( fval[1] != 0.0 )| (fval[2] != 0.0)) {
+ initTransform(TFM_TRANSLATION, CTX_NONE);
+ Trans.vec[0] = fval[0];
+ Trans.vec[1] = fval[1];
+ Trans.vec[2] = fval[2];
+
+ applyTranslation(&Trans, Trans.vec);
+
+ /* evil hack - redo translation if cliiping needeed */
+ if (Trans.flag & T_CLIP_UV && clipUVTransform(&Trans, Trans.vec, 0))
+ applyTranslation(&Trans, Trans.vec);
+
+ recalcData(&Trans);
+ change =1;
+ drawSnapping(&Trans);
+ /* free data */
+ postTrans(&Trans);
+
+ /* aftertrans does insert ipos and action channels, and clears base flags, doesnt read transdata */
+ special_aftertrans_update(&Trans);
+
+ }
+
+
+
+ if (change) {
+ ;
+ }
+
+ /* send events out for redraws */
+ viewRedrawPost(&Trans);
+
+ if(Trans.undostr) BIF_undo_push(Trans.undostr);
+ else BIF_undo_push(transform_to_undostr(&Trans));
+
+ Trans.undostr= NULL;
+
+
+}
\ No newline at end of file
Modified: branches/ndof/source/blender/src/view.c
===================================================================
--- branches/ndof/source/blender/src/view.c 2007-07-31 16:56:08 UTC (rev 11448)
+++ branches/ndof/source/blender/src/view.c 2007-07-31 17:45:26 UTC (rev 11449)
@@ -2214,3 +2214,22 @@
v3d->persp=2;
}
}
+
+void ndof_transform(void)
+{
+ float fval[7];
+
+ getndof(fval);
+
+ if (G.vd->ndoffilter)
+ filterNDOFvalues(fval);
+
+ fval[0] = fval[0] * (1.0f/1024.0f);
+ fval[1] = -fval[1] * (1.0f/1024.0f); // axis inversion
+ fval[2] = -fval[2] * (1.0f/1024.0f); // axis inversion
+ fval[3] = fval[3] * (1.0f/8024.0f);
+ fval[4] = fval[4] * (1.0f/8024.0f);
+ fval[5] = fval[5] * (1.0f/8024.0f);
+
+ ndof_do_transform(fval);
+}
More information about the Bf-blender-cvs
mailing list