X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=vrtris;a=blobdiff_plain;f=src%2Fgamescr.c;fp=src%2Fgamescr.c;h=cc1a837901a814dac19a92800cfe526546a5fce8;hp=0bd7f7065cb8cdd248822b2e963992df78ac54a6;hb=a6bd42c022f3b1c12a54444e5e469215f2ecbe27;hpb=e09f58ce22aa16e6fc68347b70c2be6a864f25b3 diff --git a/src/gamescr.c b/src/gamescr.c index 0bd7f70..cc1a837 100644 --- a/src/gamescr.c +++ b/src/gamescr.c @@ -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)