6 static void cleanup(void);
7 static void start(void);
8 static void stop(void);
9 static void update(float dt);
10 static void draw(void);
11 static void reshape(int x, int y);
12 static void keyboard(int key, int pressed);
13 static void mouse(int bn, int pressed, int x, int y);
14 static void motion(int x, int y);
15 static void wheel(int dir);
17 struct game_screen game_screen = {
34 static struct cmesh *blkmesh;
35 static float cam_theta, cam_phi, cam_dist = 6;
36 static int bnstate[16];
37 static int prev_mx, prev_my;
41 if(!(blkmesh = cmesh_alloc())) {
44 if(cmesh_load(blkmesh, "data/noisecube.obj") == -1) {
45 fprintf(stderr, "failed to load block model\n");
51 static void cleanup(void)
56 static void start(void)
60 static void stop(void)
64 static void update(float dt)
68 static void draw(void)
70 glTranslatef(0, 0, -cam_dist);
71 glRotatef(cam_phi, 1, 0, 0);
72 glRotatef(cam_theta, 0, 1, 0);
77 static void reshape(int x, int y)
81 static void keyboard(int key, int pressed)
85 static void mouse(int bn, int pressed, int x, int y)
87 bnstate[bn] = pressed;
92 static void motion(int x, int y)
94 float dx = x - prev_mx;
95 float dy = y - prev_my;
100 cam_theta += dx * 0.5;
103 if(cam_phi < -90) cam_phi = -90;
104 if(cam_phi > 90) cam_phi = 90;
107 cam_dist += dy * 0.1;
108 if(cam_dist < 0) cam_dist = 0;
112 static void wheel(int dir)