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");
48 cmesh_dump_obj(blkmesh, "dump.obj");
52 static void cleanup(void)
57 static void start(void)
61 static void stop(void)
65 static void update(float dt)
69 static void draw(void)
71 glTranslatef(0, 0, -cam_dist);
72 glRotatef(cam_phi, 1, 0, 0);
73 glRotatef(cam_theta, 0, 1, 0);
78 static void reshape(int x, int y)
82 static void keyboard(int key, int pressed)
86 static void mouse(int bn, int pressed, int x, int y)
88 bnstate[bn] = pressed;
93 static void motion(int x, int y)
95 float dx = x - prev_mx;
96 float dy = y - prev_my;
101 cam_theta += dx * 0.5;
104 if(cam_phi < -90) cam_phi = -90;
105 if(cam_phi > 90) cam_phi = 90;
108 cam_dist += dy * 0.1;
109 if(cam_dist < 0) cam_dist = 0;
113 static void wheel(int dir)