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
386586e
..
ad7e4bf
100644
(file)
--- a/
scene.c
+++ b/
scene.c
@@
-1,6
+1,6
@@
/**
\r
* CITS2231 Graphics Scene Editor
\r
/**
\r
* CITS2231 Graphics Scene Editor
\r
- * @author Ashley Tyndall (20915779)
\r
+ * @author Ashley Tyndall (20915779)
, Jenna de la Harpe (20367932)
\r
*/
\r
\r
#include <stdlib.h>
\r
*/
\r
\r
#include <stdlib.h>
\r
@@
-110,8
+110,9
@@
void processLightEvents(int id) {
* @param id ID of object selected
\r
*/
\r
void processObjectEvents(int id) {
\r
* @param id ID of object selected
\r
*/
\r
void processObjectEvents(int id) {
\r
- // **NOTE: For the testing phase, only have the teapot
\r
addSceneObject(id);
\r
addSceneObject(id);
\r
+ manipulateState = STATE_OBJECT_POSITION_SCALE;
\r
+ glutPostRedisplay();
\r
}
\r
\r
/**
\r
}
\r
\r
/**
\r
@@
-119,7
+120,10
@@
void processObjectEvents(int id) {
* @param id ID of texutre selected
\r
*/
\r
void processTextureEvents(int id) {
\r
* @param id ID of texutre selected
\r
*/
\r
void processTextureEvents(int id) {
\r
-
\r
+ if ( curObject >= 0 ) {
\r
+ sceneObjs[curObject].texture = id;
\r
+ glutPostRedisplay();
\r
+ }
\r
}
\r
\r
/**
\r
}
\r
\r
/**
\r
@@
-167,7
+171,7
@@
void makeMenu() {
glutAddMenuEntry("Position/Scale", M_POSITION_SCALE);
\r
glutAddMenuEntry("Rotation/Texture Scale", M_ROTATION_TEXTURE_SCALE);
\r
//glutAddSubMenu("Material", materialMenu);
\r
glutAddMenuEntry("Position/Scale", M_POSITION_SCALE);
\r
glutAddMenuEntry("Rotation/Texture Scale", M_ROTATION_TEXTURE_SCALE);
\r
//glutAddSubMenu("Material", materialMenu);
\r
-
//
glutAddSubMenu("Texture", textureMenu);
\r
+ glutAddSubMenu("Texture", textureMenu);
\r
glutAddSubMenu("Ground texture", gTextureMenu);
\r
//glutAddSubMenu("Lights", lightMenu);
\r
glutAddMenuEntry("Exit", M_EXIT);
\r
glutAddSubMenu("Ground texture", gTextureMenu);
\r
//glutAddSubMenu("Lights", lightMenu);
\r
glutAddMenuEntry("Exit", M_EXIT);
\r
@@
-295,21
+299,29
@@
void motion(int x, int y) {
break;
\r
\r
case STATE_OBJECT_POSITION_SCALE:
\r
break;
\r
\r
case STATE_OBJECT_POSITION_SCALE:
\r
- //SceneObject co = sceneObjs[curObject];
\r
-
\r
+ //so.x, so.y, so.z
\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
-
\r
+ //sceneObjs[curObject].x += (x - startx)*leftrightFactor;
\r
} else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) {
\r
// w: big/small, h: up/down
\r
} else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) {
\r
// w: big/small, h: up/down
\r
+ float scaling = (y - starty)*bigsmallFactor;
\r
+ printf("Scaling by %f on all axii\n", scaling);
\r
+ sceneObjs[curObject].scale[0] += scaling;
\r
+ sceneObjs[curObject].scale[1] += scaling;
\r
+ sceneObjs[curObject].scale[2] += scaling;
\r
}
\r
}
\r
+
\r
+ startx = x;
\r
break;
\r
\r
case STATE_OBJECT_ROTATION_TEXTURE_SCALE:
\r
if ( buttonSelected == GLUT_LEFT_BUTTON ) {
\r
// w: rotate on width, h: rotate on h
\r
break;
\r
\r
case STATE_OBJECT_ROTATION_TEXTURE_SCALE:
\r
if ( buttonSelected == GLUT_LEFT_BUTTON ) {
\r
// w: rotate on width, h: rotate on h
\r
+
\r
} else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) {
\r
} else if ( buttonSelected == GLUT_MIDDLE_BUTTON ) {
\r
- // w & h, rotate on h
\r
+ // w: rotate on height, h: texture scale
\r
+
\r
}
\r
break;
\r
\r
}
\r
break;
\r
\r
@@
-384,17
+396,15
@@
void display() {
drawFloor();
\r
\r
// Draw sceneObjs array
\r
drawFloor();
\r
\r
// Draw sceneObjs array
\r
- glPushMatrix();
\r
- for ( int i = 0; i < nObjects; i++ ) {
\r
+ for ( int i = 0; i < nObjects; i++ ) {
\r
+ glPushMatrix();
\r
SceneObject so = sceneObjs[i];
\r
\r
// Apply rotation vector
\r
SceneObject so = sceneObjs[i];
\r
\r
// Apply rotation vector
\r
- vector* rv = so.rotation.vect;
\r
- glRotatef(so.rotation.parameter, *rv[0], *rv[1], *rv[2]);
\r
+ glRotatef(so.rotation.amount, so.rotation.vector[0], so.rotation.vector[1], so.rotation.vector[2]);
\r
\r
// Apply scaling vector
\r
\r
// Apply scaling vector
\r
- vector* sv = so.scale;
\r
- glScalef(*sv[0], *sv[1], *sv[2]);
\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 translation vector
\r
glTranslatef(so.x, so.y, so.z);
\r
@@
-404,7
+414,6
@@
void display() {
getTexture(so.texture);
\r
glBindTexture(GL_TEXTURE_2D, so.texture);
\r
} else {
\r
getTexture(so.texture);
\r
glBindTexture(GL_TEXTURE_2D, so.texture);
\r
} else {
\r
- getTexture(0);
\r
glBindTexture(GL_TEXTURE_2D, 0);
\r
}
\r
\r
glBindTexture(GL_TEXTURE_2D, 0);
\r
}
\r
\r
@@
-419,8
+428,9
@@
void display() {
}
\r
\r
glBindTexture(GL_TEXTURE_2D, 0);
\r
}
\r
\r
glBindTexture(GL_TEXTURE_2D, 0);
\r
- }
\r
- glPopMatrix();
\r
+ glPopMatrix();
\r
+ }
\r
+
\r
\r
// Draw a white ball over the light source
\r
glPushMatrix();
\r
\r
// Draw a white ball over the light source
\r
glPushMatrix();
\r
UCC
git Repository :: git.ucc.asn.au