- /*
- glBegin(GL_QUADS);
- glNormal3f(0, 1, 0);
- glVertex3f(-30, -10, 30);
- glVertex3f(30, -10, 30);
- glVertex3f(30, -10, -30);
- glVertex3f(-30, -10, -30);
- glEnd();
- */
-
- glUseProgram(sdr);
- scn->draw();
- glUseProgram(0);
+ rend->draw();
+ exman->draw();
+
+ if(have_handtracking) {
+ Mat4 head_xform = inverse(mouse_view_matrix);//goatvr_head_matrix();
+ Mat4 head_dir_xform = head_xform.upper3x3();
+
+ glUseProgram(0);
+ glPushAttrib(GL_ENABLE_BIT);
+ glDisable(GL_LIGHTING);
+ glBegin(GL_LINES);
+ for(int i=0; i<2; i++) {
+ if(vrhand[i].valid) {
+ glColor3f(i, 1 - i, i);
+ } else {
+ glColor3f(0.5, 0.5, 0.5);
+ }
+ Vec3 v = head_xform * vrhand[i].pos;
+ Vec3 dir = head_dir_xform * rotate(Vec3(0, 0, -1), vrhand[i].rot) * 20.0f;
+ Vec3 up = head_dir_xform * rotate(Vec3(0, 1, 0), vrhand[i].rot) * 10.0f;
+ Vec3 right = head_dir_xform * rotate(Vec3(1, 0, 0), vrhand[i].rot) * 10.0f;
+
+ glVertex3f(v.x, v.y, v.z);
+ glVertex3f(v.x + dir.x, v.y + dir.y, v.z + dir.z);
+ glVertex3f(v.x - right.x, v.y - right.y, v.z - right.z);
+ glVertex3f(v.x + right.x, v.y + right.y, v.z + right.z);
+ glVertex3f(v.x - up.x, v.y - up.y, v.z - up.z);
+ glVertex3f(v.x + up.x, v.y + up.y, v.z + up.z);
+ }
+ glEnd();
+ glPopAttrib();
+ }
+
+ if(debug_gui && dbg_sel_node) {
+ AABox bvol = dbg_sel_node->get_bounds();
+ draw_geom_object(&bvol);
+ }
+
+ if(show_walk_mesh && mscn->walk_mesh) {
+ glPushAttrib(GL_ENABLE_BIT);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_ONE, GL_ONE);
+ glEnable(GL_POLYGON_OFFSET_FILL);
+
+ glUseProgram(0);
+
+ glPolygonOffset(-1, 1);
+ glDepthMask(0);
+
+ glColor3f(0.3, 0.08, 0.01);
+ mscn->walk_mesh->draw();
+
+ glDepthMask(1);
+
+ glPopAttrib();
+ }
+
+ exui_draw();
+
+ print_text(Vec2(9 * win_width / 10, 20), Vec3(1, 1, 0), "fps: %.1f", framerate);
+ draw_ui();