quick backup, commented out some printfs
[hair] / src / main.cc
index 8b0fe13..a23fcb5 100644 (file)
@@ -7,6 +7,10 @@
 #include <string>
 
 #include "mesh.h"
+#include "hair.h"
+
+#define MAX_NUM_SPAWNS 4
+#define THRESH 0.5
 
 static bool init();
 static void cleanup();
@@ -18,9 +22,10 @@ static void motion(int x, int y);
 
 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;
 
 int main(int argc, char **argv)
 {
@@ -55,7 +60,7 @@ static bool init()
        glEnable(GL_LIGHTING);
        glEnable(GL_LIGHT0);
 
-       glClearColor(1, 0.5, 0.5, 1);
+       glClearColor(0.5, 0.5, 0.5, 1);
        meshes = load_meshes("data/head.fbx");
        if (meshes.empty()) {
                fprintf(stderr, "Failed to load mesh.\n");
@@ -64,29 +69,42 @@ 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];
                }
        }
+       if(!mesh_head) {
+               fprintf(stderr, "Failed to find the head mesh.\n");
+               return false;
+       }
+
+       if(!hair.init(mesh_head, MAX_NUM_SPAWNS, THRESH)) {
+               fprintf(stderr, "Failed to initialize hair\n");
+               return false;
+       }
 
        return true;
 }
 
 static void cleanup()
 {
+       for(size_t i=0; i<meshes.size(); i++) {
+               delete meshes[i];
+       }
 }
 
 static void display()
@@ -99,12 +117,12 @@ static void display()
        glRotatef(cam_phi, 1, 0, 0);
        glRotatef(cam_theta, 0, 1, 0);
 
-       glTranslatef(0, -16, 0);
-
        for(size_t i=0; i<meshes.size(); i++) {
                meshes[i]->draw();
        }
 
+       hair.draw();
+
        glutSwapBuffers();
        assert(glGetError() == GL_NO_ERROR);
 }