weird keyup keydown behavior
[hair] / src / main.cc
index 2bdbad9..5a93d0e 100644 (file)
@@ -17,6 +17,7 @@ static void cleanup();
 static void display();
 static void reshape(int x, int y);
 static void keydown(unsigned char key, int x, int y);
+static void keyup(unsigned char key, int x, int y);
 static void mouse(int bn, int st, int x, int y);
 static void motion(int x, int y);
 
@@ -24,8 +25,9 @@ static std::vector<Mesh*> meshes;
 static Mesh *mesh_head;
 static Hair hair;
 
-int win_width, win_height;
-float cam_theta, cam_phi = 25, cam_dist = 8;
+static int win_width, win_height;
+static float cam_theta, cam_phi = 25, cam_dist = 8;
+static float hair_deg;
 
 int main(int argc, char **argv)
 {
@@ -37,6 +39,7 @@ int main(int argc, char **argv)
        glutDisplayFunc(display);
        glutReshapeFunc(reshape);
        glutKeyboardFunc(keydown);
+       glutKeyboardUpFunc(keyup);
        glutMouseFunc(mouse);
        glutMotionFunc(motion);
 
@@ -69,19 +72,20 @@ static bool init()
 
        for(size_t i=0; i<meshes.size(); i++) {
                meshes[i]->calc_bbox();
-
+/*
                Vec3 v0 = meshes[i]->bbox.v0;
                Vec3 v1 = meshes[i]->bbox.v1;
 
                printf("mesh: %s\n", meshes[i]->name.c_str());
                printf("AABB mesh %d: v0: (%f, %f, %f) v1: (%f, %f, %f)\n",
                                (int)i, v0.x, v0.y, v0.z, v1.x, v1.y, v1.z);
-
+*/
                meshes[i]->update_vbo(MESH_ALL);
+/*
                printf("num vertices: %d num triangles: %d\n",
                                (int)meshes[i]->vertices.size(),
                                (int)meshes[i]->indices.size() / 3);
-
+*/
                if(meshes[i]->name == "head") {
                        mesh_head = meshes[i];
                }
@@ -140,8 +144,26 @@ static void reshape(int x, int y)
 static void keydown(unsigned char key, int /*x*/, int /*y*/)
 {
        switch(key) {
+       case 'h':
+       case 'H':
+               printf("key %u down\n", key);
+               break;
        case 27:
                exit(0);
+       default:
+               break;
+       }
+}
+
+static void keyup(unsigned char key, int /*x*/, int /*y*/)
+{
+       switch(key) {
+               case 'h':
+               case 'H':
+                       printf("key %u up\n", key);
+                       break;
+               default:
+                       break;
        }
 }