mesh dump routines
[vrtris] / src / gamescr.c
index 0bd7f70..cc1a837 100644 (file)
@@ -32,6 +32,9 @@ struct game_screen game_screen = {
 };
 
 static struct cmesh *blkmesh;
+static float cam_theta, cam_phi, cam_dist = 6;
+static int bnstate[16];
+static int prev_mx, prev_my;
 
 static int init(void)
 {
@@ -42,6 +45,7 @@ static int init(void)
                fprintf(stderr, "failed to load block model\n");
                return -1;
        }
+       cmesh_dump_obj(blkmesh, "dump.obj");
        return 0;
 }
 
@@ -64,7 +68,9 @@ static void update(float dt)
 
 static void draw(void)
 {
-       glTranslatef(0, 0, 6);
+       glTranslatef(0, 0, -cam_dist);
+       glRotatef(cam_phi, 1, 0, 0);
+       glRotatef(cam_theta, 0, 1, 0);
 
        cmesh_draw(blkmesh);
 }
@@ -79,10 +85,29 @@ static void keyboard(int key, int pressed)
 
 static void mouse(int bn, int pressed, int x, int y)
 {
+       bnstate[bn] = pressed;
+       prev_mx = x;
+       prev_my = y;
 }
 
 static void motion(int x, int y)
 {
+       float dx = x - prev_mx;
+       float dy = y - prev_my;
+       prev_mx = x;
+       prev_my = y;
+
+       if(bnstate[0]) {
+               cam_theta += dx * 0.5;
+               cam_phi += dy * 0.5;
+
+               if(cam_phi < -90) cam_phi = -90;
+               if(cam_phi > 90) cam_phi = 90;
+       }
+       if(bnstate[2]) {
+               cam_dist += dy * 0.1;
+               if(cam_dist < 0) cam_dist = 0;
+       }
 }
 
 static void wheel(int dir)