*/\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
+ float angler = 2 * M_PI * ( (rotate*camRotateFactor)/360.0 );\r
+ printf("cam angle: %f\n", rotate*camRotateFactor);\r
+\r
+ sceneObjs[curObject].x += diffx * cos(angler) * 0.1;\r
+ sceneObjs[curObject].z += diffx * sin(angler) * 0.1;\r
+\r
+ sceneObjs[curObject].x += diffy * sin(angler) * 0.1;\r
+ sceneObjs[curObject].z += diffy * cos(angler) * 0.1;\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 += diffy * 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
glPushMatrix();\r
SceneObject so = sceneObjs[i];\r
\r
+ // Apply translation vector\r
+ glTranslatef(so.x, so.y, so.z);\r
+\r
// Apply independant rotation vectors\r
glRotatef(so.rotation.x, 1.0, 0.0, 0.0);\r
glRotatef(so.rotation.y, 0.0, 1.0, 0.0);\r
// Apply scaling vector\r
glScalef(so.scale[0], so.scale[1], so.scale[2]);\r
\r
- // Apply translation vector\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
glBindTexture(GL_TEXTURE_2D, 0);\r
glPopMatrix();\r
}\r
- \r
\r
// Draw a white ball over the light sources\r
glDisable(GL_LIGHTING);\r
\r
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);\r
\r
- glutInitWindowSize(500, 500);\r
- glutCreateWindow("Scene Editor");\r
+ glutInitWindowSize(width, height);\r
+ glutCreateWindow("Scene Editor - Ashley Tyndall (20915779), Jenna de la Harpe (20367932)");\r
\r
glShadeModel(GL_SMOOTH); // Enables Smooth Shading\r
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Black Background\r