git.ucc.asn.au
/
atyndall
/
cits2231.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
53d9a37
)
(no commit message)
author
Ash Tyndall
<
[email protected]
>
Tue, 18 Oct 2011 10:47:48 +0000
(18:47 +0800)
committer
Ash Tyndall
<
[email protected]
>
Tue, 18 Oct 2011 10:47:48 +0000
(18:47 +0800)
scene.c
patch
|
blob
|
history
diff --git
a/scene.c
b/scene.c
index
eb5c537
..
15d8f9d
100644
(file)
--- a/
scene.c
+++ b/
scene.c
@@
-118,7
+118,15
@@
static GLfloat floorVertices[4][3] = {
\r
static GLfloat lightColor[] = {1.0, 1.0, 1.0, 1.0}; // White light
\r
static GLfloat lightPosition[4];
\r
\r
static GLfloat lightColor[] = {1.0, 1.0, 1.0, 1.0}; // White light
\r
static GLfloat lightPosition[4];
\r
-static float lightAngle = 10.0, lightHeight = 20;
\r
+
\r
+int moving, startx, starty;
\r
+int lightMoving = 0, lightStartX, lightStartY;
\r
+
\r
+/* Time varying or user-controled variables. */
\r
+static float jump = 0.0;
\r
+static float lightAngle = 0.0, lightHeight = 20;
\r
+GLfloat angle = -150; /* in degrees */
\r
+GLfloat angle2 = 30; /* in degrees */
\r
\r
/**
\r
* Prints out error message when file cannot be read
\r
\r
/**
\r
* Prints out error message when file cannot be read
\r
@@
-498,10
+506,54
@@
void windowReshape(int w, int h) {
* @param x Mouse x position
\r
* @param y Mouse y position
\r
*/
\r
* @param x Mouse x position
\r
* @param y Mouse y position
\r
*/
\r
-void mouse(int btn, int state, int x, int y) {
\r
+
/*
void mouse(int btn, int state, int x, int y) {
\r
\r
\r
+}*/
\r
+static void
\r
+mouse(int button, int state, int x, int y)
\r
+{
\r
+ if (button == GLUT_LEFT_BUTTON) {
\r
+ if (state == GLUT_DOWN) {
\r
+ moving = 1;
\r
+ startx = x;
\r
+ starty = y;
\r
+ }
\r
+ if (state == GLUT_UP) {
\r
+ moving = 0;
\r
+ }
\r
+ }
\r
+ if (button == GLUT_MIDDLE_BUTTON) {
\r
+ if (state == GLUT_DOWN) {
\r
+ lightMoving = 1;
\r
+ lightStartX = x;
\r
+ lightStartY = y;
\r
+ }
\r
+ if (state == GLUT_UP) {
\r
+ lightMoving = 0;
\r
+ }
\r
+ }
\r
}
\r
\r
}
\r
\r
+static void
\r
+motion(int x, int y)
\r
+{
\r
+ if (moving) {
\r
+ angle = angle + (x - startx);
\r
+ angle2 = angle2 + (y - starty);
\r
+ startx = x;
\r
+ starty = y;
\r
+ glutPostRedisplay();
\r
+ }
\r
+ if (lightMoving) {
\r
+ lightAngle += (x - lightStartX)/40.0;
\r
+ lightHeight += (lightStartY - y)/20.0;
\r
+ lightStartX = x;
\r
+ lightStartY = y;
\r
+ glutPostRedisplay();
\r
+ }
\r
+}
\r
+
\r
+
\r
/**
\r
* Draw a floor.
\r
*/
\r
/**
\r
* Draw a floor.
\r
*/
\r
@@
-539,7
+591,7
@@
void display() {
gluLookAt(
\r
0.0, 0.0, 60.0, /* eye is at (x,y,z) */
\r
0.0, 0.0, 0.0, /* center is at (x,y,z) */
\r
gluLookAt(
\r
0.0, 0.0, 60.0, /* eye is at (x,y,z) */
\r
0.0, 0.0, 0.0, /* center is at (x,y,z) */
\r
- 0.0, 1.0,
1
.0 /* up is in postivie Y direction */
\r
+ 0.0, 1.0,
0
.0 /* up is in postivie Y direction */
\r
);
\r
\r
/* Reposition the light source. */
\r
);
\r
\r
/* Reposition the light source. */
\r
@@
-549,6
+601,10
@@
void display() {
lightPosition[3] = 0.0;
\r
\r
glPushMatrix();
\r
lightPosition[3] = 0.0;
\r
\r
glPushMatrix();
\r
+ /* Perform scene rotations based on user mouse input. */
\r
+ glRotatef(angle2, 1.0, 0.0, 0.0);
\r
+ glRotatef(angle, 0.0, 1.0, 0.0);
\r
+
\r
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
\r
\r
glEnable(GL_BLEND);
\r
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
\r
\r
glEnable(GL_BLEND);
\r
@@
-643,6
+699,7
@@
int main(int argc, char **argv) {
glutReshapeFunc(windowReshape);
\r
glutDisplayFunc(display);
\r
glutMouseFunc(mouse);
\r
glutReshapeFunc(windowReshape);
\r
glutDisplayFunc(display);
\r
glutMouseFunc(mouse);
\r
+ glutMotionFunc(motion);
\r
\r
makeMenu();
\r
\r
\r
makeMenu();
\r
\r
UCC
git Repository :: git.ucc.asn.au