git.ucc.asn.au
/
atyndall
/
cits2231.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
(no commit message)
[atyndall/cits2231.git]
/
scene.c
diff --git
a/scene.c
b/scene.c
index
74e79a7
..
49661b1
100644
(file)
--- a/
scene.c
+++ b/
scene.c
@@
-199,6
+199,9
@@
void windowReshape(int w, int h) {
* @param y Mouse y position
\r
*/
\r
void mouse(int button, int state, int x, int y) {
\r
* @param y Mouse y position
\r
*/
\r
void mouse(int button, int state, int x, int y) {
\r
+ if ( button == GLUT_LEFT_BUTTON && glutGetModifiers() == GLUT_ACTIVE_SHIFT ) {
\r
+ button = GLUT_MIDDLE_BUTTON; // Holding shift with left button is the same as the middle button
\r
+ }
\r
switch(button) {
\r
case GLUT_LEFT_BUTTON:
\r
case GLUT_MIDDLE_BUTTON:
\r
switch(button) {
\r
case GLUT_LEFT_BUTTON:
\r
case GLUT_MIDDLE_BUTTON:
\r
@@
-283,13
+286,14
@@
void motion(int x, int y) {
\r
switch ( manipulateState ) {
\r
case STATE_CAMERA_ROTATE_MOVE:
\r
\r
switch ( manipulateState ) {
\r
case STATE_CAMERA_ROTATE_MOVE:
\r
+ // w: rotate
\r
rotate += (x - startx);
\r
\r
if ( buttonSelected == GLUT_LEFT_BUTTON ) {
\r
rotate += (x - startx);
\r
\r
if ( buttonSelected == GLUT_LEFT_BUTTON ) {
\r
- //
w: rotate,
h: zoom
\r
+ // h: zoom
\r
zoom += (y - starty);
\r
} else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) {
\r
zoom += (y - starty);
\r
} else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) {
\r
- //
w: rotate,
h: tilt
\r
+ // h: tilt
\r
camAngle += (y - starty);
\r
}
\r
\r
camAngle += (y - starty);
\r
}
\r
\r
@@
-299,24
+303,28
@@
void motion(int x, int y) {
break;
\r
\r
case STATE_OBJECT_POSITION_SCALE:
\r
break;
\r
\r
case STATE_OBJECT_POSITION_SCALE:
\r
- //so.x, so.y, so.z
\r
+
\r
if ( buttonSelected == GLUT_LEFT_BUTTON ) {
\r
// w: left/right, h: near/far
\r
if ( buttonSelected == GLUT_LEFT_BUTTON ) {
\r
// w: left/right, h: near/far
\r
+ //so.x, so.y, so.z
\r
//sceneObjs[curObject].x += (x - startx)*leftrightFactor;
\r
} else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) {
\r
//sceneObjs[curObject].x += (x - startx)*leftrightFactor;
\r
} else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) {
\r
- // w: big/small, h: up/down
\r
-
\r
- // For big/small scaling, we map negative numbers to 0->1 and positive numbers to 1->inf
\r
+ // w: big/small
\r
float diff = (x - startx);
\r
float diff = (x - startx);
\r
- float scaling = ( diff + (float)height/2 ) / ( (float)height/2 );
\r
+ float max = (float)height/bigsmallFactor;
\r
+ float scaling = ( diff + max) / max;
\r
\r
sceneObjs[curObject].scale[0] *= scaling;
\r
sceneObjs[curObject].scale[1] *= scaling;
\r
sceneObjs[curObject].scale[2] *= scaling;
\r
\r
sceneObjs[curObject].scale[0] *= scaling;
\r
sceneObjs[curObject].scale[1] *= scaling;
\r
sceneObjs[curObject].scale[2] *= scaling;
\r
- printf("Diff is %f, Scaling by %f on all axii, 1/map is %f\n", diff, sceneObjs[curObject].scale[0], scaling);
\r
+
\r
+ // h: up/down
\r
+ sceneObjs[curObject].y -= (y - starty) * updownFactor;
\r
}
\r
\r
}
\r
\r
+ starty = y;
\r
startx = x;
\r
startx = x;
\r
+
\r
break;
\r
\r
case STATE_OBJECT_ROTATION_TEXTURE_SCALE:
\r
break;
\r
\r
case STATE_OBJECT_ROTATION_TEXTURE_SCALE:
\r
UCC
git Repository :: git.ucc.asn.au