(no commit message)
authorAsh Tyndall <[email protected]>
Thu, 20 Oct 2011 03:47:00 +0000 (11:47 +0800)
committerAsh Tyndall <[email protected]>
Thu, 20 Oct 2011 03:47:00 +0000 (11:47 +0800)
globals.c
globals.h
scene.c
scene.h

index b441f8c..56b8d1a 100644 (file)
--- a/globals.c
+++ b/globals.c
@@ -72,6 +72,9 @@ int drawFloorRecurse = 5;
 /* Size of floor, from -n to n */
 int floorSize = 200;
 
+/* Current camera x, y, z coords */
+GLfloat x = 0.0, y = 0.0, z = 0.0;
+
 /* Light 0 parameters */
 GLfloat diffuse0[] = {1.0, 1.0, 1.0, 1.0};
 GLfloat ambient0[] = {0.0, 0.0, 0.0, 1.0};
index ac0184c..04841f8 100644 (file)
--- a/globals.h
+++ b/globals.h
@@ -62,6 +62,9 @@ extern int drawFloorRecurse;
 /* Size of floor, from -n to n */
 extern int floorSize;
 
+/* Current camera position */
+extern GLfloat x, y, z;
+
 /* Light 0 parameters */
 extern GLfloat diffuse0[];
 extern GLfloat ambient0[];
diff --git a/scene.c b/scene.c
index e8d7bb8..f748458 100644 (file)
--- a/scene.c
+++ b/scene.c
@@ -226,6 +226,30 @@ void mouse(int button, int state, int x, int y) {
   }\r
 }\r
 \r
+void keyboard(unsigned char key, int x, int y) {\r
+  switch(key) {\r
+    case 'w':\r
+      z = z - 1;\r
+      break;\r
+    case 'a':\r
+      x = x - 1;\r
+      break;\r
+    case 's':\r
+      z = z + 1;\r
+      break;\r
+    case 'd':\r
+      x = x + 1;\r
+      break;\r
+    case 'q':\r
+      y = y + 1;\r
+      break;\r
+    case 'e':\r
+      y = y - 1;\r
+      break;\r
+  }\r
+  printf("Camera is now at (%f, %f, %f)", x, y, z);\r
+}\r
+\r
 /**\r
  * Called when motion event occurs\r
  * @param x Mouse x position\r
@@ -255,12 +279,11 @@ void display() {
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\r
   glLoadIdentity();\r
   gluLookAt(\r
-    0.0, 10.0, 10.0,  /* eye is at (x,y,z) */\r
+    x, y, z,  /* eye is at (x,y,z) */\r
     0.0, 0.0,  0.0,  /* center is at (x,y,z) */\r
     0.0, 1.0,  0.0   /* up is in postivie Y direction */\r
     );\r
 \r
-\r
   // **NOTE: Currently this rotation function is all that moves the camera off\r
   //         the flat surface. Need to integrate function into gluLookAt\r
   glRotatef(30.0, 1.0, 0.0, 0.0);\r
@@ -376,6 +399,7 @@ int main(int argc, char **argv) {
   //glutReshapeFunc(windowReshape);\r
   glutDisplayFunc(display);\r
   glutMouseFunc(mouse);\r
+  glutKeyboardFunc(keyboard);\r
   glutMotionFunc(motion);\r
 \r
   makeMenu();\r
diff --git a/scene.h b/scene.h
index 57fb933..33955b4 100644 (file)
--- a/scene.h
+++ b/scene.h
@@ -17,6 +17,7 @@ void makeMenu();
 
 void windowReshape(int w, int h);
 void mouse(int button, int state, int x, int y);
+void keyboard(unsigned char key, int x, int y);
 void motion(int x, int y);
 
 void display();

UCC git Repository :: git.ucc.asn.au