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
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2005-06-28 11:58:16 +0400
committerMartin Poirier <theeth@yahoo.com>2005-06-28 11:58:16 +0400
commita344dca9cfb1262f375483cb89c716019f44a782 (patch)
tree4abb3c0ec36b735676b02a175bcfe10d3a1ef864 /source/blender/src/transform_manipulator.c
parent12d10f45ea4818fb1eb203c6e655aee24cc51c00 (diff)
Transform stuff
Cleanup in transform.c: removed uneeded includes and removed REPEAT experiment. Split off manipulator init function, no need to resort on hacks to setup stuff before starting transform anymore. Fix0r3d single axis projection for constraints. It deals with perspective correctly now (as much as planar constraints).
Diffstat (limited to 'source/blender/src/transform_manipulator.c')
-rw-r--r--source/blender/src/transform_manipulator.c154
1 files changed, 76 insertions, 78 deletions
diff --git a/source/blender/src/transform_manipulator.c b/source/blender/src/transform_manipulator.c
index c09724a7284..e06fa1aa37e 100644
--- a/source/blender/src/transform_manipulator.c
+++ b/source/blender/src/transform_manipulator.c
@@ -1493,90 +1493,88 @@ int BIF_do_manipulator(ScrArea *sa)
// drawflags still global, for drawing call above
drawflags= manipulator_selectbuf(sa, 0.2f*(float)U.tw_hotspot);
if(drawflags==0) drawflags= val;
-
- switch(drawflags) {
- case MAN_TRANS_C:
- ManipulatorTransform(TFM_TRANSLATION);
- break;
- case MAN_TRANS_X:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_TRANS_Y|MAN_TRANS_Z;
- BIF_setDualAxisConstraint(v3d->twmat[1], v3d->twmat[2], " Y+Z");
- }
- else
- BIF_setSingleAxisConstraint(v3d->twmat[0], " X");
- ManipulatorTransform(TFM_TRANSLATION);
- break;
- case MAN_TRANS_Y:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_TRANS_X|MAN_TRANS_Z;
- BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[2], " X+Z");
- }
- else
- BIF_setSingleAxisConstraint(v3d->twmat[1], " Y");
- ManipulatorTransform(TFM_TRANSLATION);
- break;
- case MAN_TRANS_Z:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_TRANS_X|MAN_TRANS_Y;
- BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[1], " X+Y");
+
+ if (drawflags & MAN_TRANS_C) {
+ initManipulator(TFM_TRANSLATION);
+ switch(drawflags) {
+ case MAN_TRANS_C:
+ break;
+ case MAN_TRANS_X:
+ if(G.qual & LR_SHIFTKEY) {
+ drawflags= MAN_TRANS_Y|MAN_TRANS_Z;
+ BIF_setDualAxisConstraint(v3d->twmat[1], v3d->twmat[2], " Y+Z");
+ }
+ else
+ BIF_setSingleAxisConstraint(v3d->twmat[0], " X");
+ break;
+ case MAN_TRANS_Y:
+ if(G.qual & LR_SHIFTKEY) {
+ drawflags= MAN_TRANS_X|MAN_TRANS_Z;
+ BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[2], " X+Z");
+ }
+ else
+ BIF_setSingleAxisConstraint(v3d->twmat[1], " Y");
+ break;
+ case MAN_TRANS_Z:
+ if(G.qual & LR_SHIFTKEY) {
+ drawflags= MAN_TRANS_X|MAN_TRANS_Y;
+ BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[1], " X+Y");
+ }
+ else
+ BIF_setSingleAxisConstraint(v3d->twmat[2], " Z");
+ break;
}
- else
- BIF_setSingleAxisConstraint(v3d->twmat[2], " Z");
- ManipulatorTransform(TFM_TRANSLATION);
- break;
-
- case MAN_SCALE_C:
- ManipulatorTransform(TFM_RESIZE);
- break;
- case MAN_SCALE_X:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_SCALE_Y|MAN_SCALE_Z;
- BIF_setDualAxisConstraint(v3d->twmat[1], v3d->twmat[2], " Y+Z");
+ ManipulatorTransform();
+ }
+ else if (drawflags & MAN_SCALE_C) {
+ initManipulator(TFM_RESIZE);
+ switch(drawflags) {
+ case MAN_SCALE_X:
+ if(G.qual & LR_SHIFTKEY) {
+ drawflags= MAN_SCALE_Y|MAN_SCALE_Z;
+ BIF_setDualAxisConstraint(v3d->twmat[1], v3d->twmat[2], " Y+Z");
+ }
+ else
+ BIF_setSingleAxisConstraint(v3d->twmat[0], " X");
+ break;
+ case MAN_SCALE_Y:
+ if(G.qual & LR_SHIFTKEY) {
+ drawflags= MAN_SCALE_X|MAN_SCALE_Z;
+ BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[2], " X+Z");
+ }
+ else
+ BIF_setSingleAxisConstraint(v3d->twmat[1], " Y");
+ break;
+ case MAN_SCALE_Z:
+ if(G.qual & LR_SHIFTKEY) {
+ drawflags= MAN_SCALE_X|MAN_SCALE_Y;
+ BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[1], " X+Y");
+ }
+ else
+ BIF_setSingleAxisConstraint(v3d->twmat[2], " Z");
+ break;
}
- else
+ ManipulatorTransform();
+ }
+ else if (drawflags == MAN_ROT_T) { /* trackbal need special case, init is different */
+ initManipulator(TFM_TRACKBALL);
+ ManipulatorTransform();
+ }
+ else if (drawflags & MAN_ROT_C) {
+ initManipulator(TFM_ROTATION);
+ switch(drawflags) {
+ case MAN_ROT_X:
BIF_setSingleAxisConstraint(v3d->twmat[0], " X");
- ManipulatorTransform(TFM_RESIZE);
- break;
- case MAN_SCALE_Y:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_SCALE_X|MAN_SCALE_Z;
- BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[2], " X+Z");
- }
- else
+ break;
+ case MAN_ROT_Y:
BIF_setSingleAxisConstraint(v3d->twmat[1], " Y");
- ManipulatorTransform(TFM_RESIZE);
- break;
- case MAN_SCALE_Z:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_SCALE_X|MAN_SCALE_Y;
- BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[1], " X+Y");
- }
- else
+ break;
+ case MAN_ROT_Z:
BIF_setSingleAxisConstraint(v3d->twmat[2], " Z");
- ManipulatorTransform(TFM_RESIZE);
- break;
-
- case MAN_ROT_X:
- BIF_setSingleAxisConstraint(v3d->twmat[0], " X");
- ManipulatorTransform(TFM_ROTATION);
- break;
- case MAN_ROT_Y:
- BIF_setSingleAxisConstraint(v3d->twmat[1], " Y");
- ManipulatorTransform(TFM_ROTATION);
- break;
- case MAN_ROT_Z:
- BIF_setSingleAxisConstraint(v3d->twmat[2], " Z");
- ManipulatorTransform(TFM_ROTATION);
- break;
- case MAN_ROT_T:
- ManipulatorTransform(TFM_TRACKBALL);
- break;
- case MAN_ROT_V:
- ManipulatorTransform(TFM_ROTATION);
- break;
+ break;
+ }
+ ManipulatorTransform();
}
-
}
/* after transform, restore drawflags */
drawflags= 0xFFFF;