projects
/
laserbrain_demo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vr input
[laserbrain_demo]
/
src
/
app.cc
diff --git
a/src/app.cc
b/src/app.cc
index
bc3f13c
..
2927ce8
100644
(file)
--- a/
src/app.cc
+++ b/
src/app.cc
@@
-14,6
+14,7
@@
#include "opt.h"
#include "post.h"
#include "renderer.h"
#include "opt.h"
#include "post.h"
#include "renderer.h"
+#include "vrinput.h"
#include "exman.h"
#include "blob_exhibit.h"
#include "exman.h"
#include "blob_exhibit.h"
@@
-45,7
+46,7
@@
static float walk_speed = 300.0f;
static float mouse_speed = 0.5f;
static bool show_walk_mesh, noclip = false;
static float mouse_speed = 0.5f;
static bool show_walk_mesh, noclip = false;
-static bool have_headtracking, should_swap;
+static bool have_headtracking, have_handtracking, should_swap;
static int prev_mx, prev_my;
static bool bnstate[8];
static int prev_mx, prev_my;
static bool bnstate[8];
@@
-88,6
+89,7
@@
bool app_init(int argc, char **argv)
should_swap = goatvr_should_swap() != 0;
user_eye_height = goatvr_get_eye_height();
have_headtracking = goatvr_have_headtracking();
should_swap = goatvr_should_swap() != 0;
user_eye_height = goatvr_get_eye_height();
have_headtracking = goatvr_have_headtracking();
+ have_handtracking = goatvr_have_handtracking();
goatvr_recenter();
}
goatvr_recenter();
}
@@
-111,6
+113,10
@@
bool app_init(int argc, char **argv)
glClearColor(1, 1, 1, 1);
glClearColor(1, 1, 1, 1);
+ if(!init_vrhands()) {
+ return false;
+ }
+
mscn = new MetaScene;
if(!mscn->load(opt.scenefile ? opt.scenefile : "data/museum.scene")) {
return false;
mscn = new MetaScene;
if(!mscn->load(opt.scenefile ? opt.scenefile : "data/museum.scene")) {
return false;
@@
-122,6
+128,9
@@
bool app_init(int argc, char **argv)
cam_theta = rad_to_deg(acos(dot(dir, Vec3(0, 0, 1))));
exman = new ExhibitManager;
cam_theta = rad_to_deg(acos(dot(dir, Vec3(0, 0, 1))));
exman = new ExhibitManager;
+ if(!exman->load(mscn, "data/exhibits")) {
+ //return false;
+ }
blobs = new BlobExhibit;
blobs->node = new SceneNode;
blobs = new BlobExhibit;
blobs->node = new SceneNode;
@@
-165,6
+174,7
@@
void app_cleanup()
if(opt.vr) {
goatvr_shutdown();
}
if(opt.vr) {
goatvr_shutdown();
}
+ destroy_vrhands();
delete rend;
delete rend;
@@
-286,6
+296,11
@@
static void update(float dt)
}
mouse_view_matrix.pre_rotate_y(deg_to_rad(cam_theta));
mouse_view_matrix.pre_translate(-cam_pos.x, -cam_pos.y, -cam_pos.z);
}
mouse_view_matrix.pre_rotate_y(deg_to_rad(cam_theta));
mouse_view_matrix.pre_translate(-cam_pos.x, -cam_pos.y, -cam_pos.z);
+
+ // update hand-tracking
+ if(have_handtracking) {
+ update_vrhands();
+ }
}
static void set_light(int idx, const Vec3 &pos, const Vec3 &color)
}
static void set_light(int idx, const Vec3 &pos, const Vec3 &color)
@@
-325,6
+340,7
@@
void app_display()
glLoadMatrixf(view_matrix[0]);
draw_scene();
glLoadMatrixf(view_matrix[0]);
draw_scene();
+ draw_vrhands();
}
goatvr_draw_done();
}
goatvr_draw_done();