*/\r
void processTextureEvents(int id) {\r
if ( curObject >= 0 ) {\r
- sceneObjs[curObject].texture = id;\r
+ sceneObjs[curObject].texture.id = id;\r
glutPostRedisplay();\r
}\r
}\r
if ( buttonSelected == GLUT_LEFT_BUTTON ) {\r
// w: left/right, h: near/far\r
\r
- // **NOTE: Currently a work in progress\r
- printf("cam angle: %f\n", rotate*rotateFactor);\r
- sceneObjs[curObject].x += diffx * sin(rotate*rotateFactor);\r
- sceneObjs[curObject].z += diffx * cos(rotate*rotateFactor);\r
+ // **NOTE: Currently a work in progress, does not work correctly\r
+ printf("cam angle: %f\n", rotate*camRotateFactor);\r
+ sceneObjs[curObject].x += diffx * sin(rotate*camRotateFactor);\r
+ sceneObjs[curObject].z += diffx * cos(rotate*camRotateFactor);\r
\r
} else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) {\r
// w: big/small\r
break;\r
\r
case STATE_OBJECT_ROTATION_TEXTURE_SCALE:\r
+\r
if ( buttonSelected == GLUT_LEFT_BUTTON ) {\r
- // w: rotate on width, h: rotate on h\r
- sceneObjs[curObject].rotation.x += diffx * rotateFactor;\r
+ // w: rotate on y\r
+ sceneObjs[curObject].rotation.y += diffx * rotateFactor;\r
+\r
+ // h: rotate on x\r
+ sceneObjs[curObject].rotation.x += diffy * rotateFactor;\r
\r
} else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) {\r
- // w: rotate on height, h: texture scale\r
- \r
+ // w: rotate on x\r
+ sceneObjs[curObject].rotation.x += diffx * rotateFactor;\r
+\r
+ // h: texture scale\r
+ float max = (float)height/texscaleFactor;\r
+ float scaling = (diffy + max) / max;\r
+ sceneObjs[curObject].texture.scale *= scaling;\r
+\r
}\r
+ \r
break;\r
\r
}\r
glPushMatrix();\r
\r
/* Perform scene rotations based on user mouse/keyboard input. */\r
- glRotatef(rotate*rotateFactor, 0.0, 1.0, 0.0);\r
+ glRotatef(rotate*camRotateFactor, 0.0, 1.0, 0.0);\r
glTranslatef(camx, camy, camz);\r
glRotatef(keyrot, 1.0, 0.0, 0.0);\r
\r
glTranslatef(so.x, so.y, so.z);\r
\r
// Apply texture\r
- if ( so.texture > 0 ) {\r
- getTexture(so.texture);\r
- glBindTexture(GL_TEXTURE_2D, so.texture);\r
+ if ( so.texture.id > 0 ) {\r
+ getTexture(so.texture.id);\r
+ glBindTexture(GL_TEXTURE_2D, so.texture.id);\r
+ glMatrixMode(GL_TEXTURE);\r
+ glScalef(so.texture.scale, so.texture.scale, so.texture.scale);\r
+ glMatrixMode(GL_MODELVIEW);\r
} else {\r
glBindTexture(GL_TEXTURE_2D, 0);\r
}\r