refactoring
[laserbrain_demo] / src / main.cc
index 772b63c..4ef90c0 100644 (file)
@@ -13,6 +13,7 @@
 #include "texture.h"
 #include "machine.h"
 #include "meshgen.h"
+#include "mparser.h"
 
 static bool init();
 static void cleanup();
@@ -56,7 +57,7 @@ int main(int argc, char **argv)
        glutInitWindowSize(1024, 768);
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE | GLUT_MULTISAMPLE);
-       glutCreateWindow("Antikythera");
+       glutCreateWindow("demo");
 
        glutDisplayFunc(display);
        glutIdleFunc(idle);
@@ -88,39 +89,10 @@ static bool init()
        Mesh::use_custom_sdr_attr = false;
 
        machine = new Machine;
-
-       const float pitch = 10.0f;
-
-       Gear *gear1 = new Gear;
-       gear1->pos = Vec3(-50, 0, 0);
-       gear1->set_teeth(16, pitch);
-       gear1->gen_mesh();
-       gear1->color = Vec3(0.35, 0.6, 0.8);
-       machine->add_gear(gear1);
-
-       Gear *gear2 = new Gear;
-       gear2->set_teeth(32, pitch);
-       gear2->pos = gear1->pos + Vec3(gear1->radius + gear2->radius - gear1->teeth_length * 0.75, 0, 0);
-       gear2->thickness = 5;
-       gear2->gen_mesh();
-       machine->add_gear(gear2);
-
-       Gear *gear3 = new Gear;
-       gear3->set_teeth(8, pitch);
-       gear3->pos = gear2->pos + Vec3(0, gear2->radius + gear3->radius - gear2->teeth_length * 0.75, 0);
-       gear3->gen_mesh();
-       machine->add_gear(gear3);
-       gear3->color = Vec3(0.5, 0.8, 0.6);
-
-       Gear *subgear = new Gear;
-       subgear->set_teeth(10, pitch);
-       subgear->pos = Vec3(0, 0, (gear2->thickness + subgear->thickness) / 2 + 1);
-       subgear->gen_mesh();
-       gear2->attach(subgear);
-       machine->add_gear(subgear);
-       subgear->color = Vec3(0.8, 0.7, 0.5);
-
-       machine->add_motor(0, 1.0);
+       if(!parse_machine(machine, "data/test.machine")) {
+               fprintf(stderr, "failed to parse machine\n");
+               return false;
+       }
 
        // shadows
        init_shadow(2048);