projects
/
vrtris
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mesh dump routines
[vrtris]
/
src
/
gamescr.c
diff --git
a/src/gamescr.c
b/src/gamescr.c
index
0bd7f70
..
cc1a837
100644
(file)
--- a/
src/gamescr.c
+++ b/
src/gamescr.c
@@
-32,6
+32,9
@@
struct game_screen game_screen = {
};
static struct cmesh *blkmesh;
};
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)
{
static int init(void)
{
@@
-42,6
+45,7
@@
static int init(void)
fprintf(stderr, "failed to load block model\n");
return -1;
}
fprintf(stderr, "failed to load block model\n");
return -1;
}
+ cmesh_dump_obj(blkmesh, "dump.obj");
return 0;
}
return 0;
}
@@
-64,7
+68,9
@@
static void update(float dt)
static void draw(void)
{
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);
}
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)
{
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)
{
}
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)
}
static void wheel(int dir)