]> Dogcows Code - chaz/yoink/blobdiff - src/YoinkApp.cc
refactoring the scene class
[chaz/yoink] / src / YoinkApp.cc
index d36f6da3ef8f52f9f8e61d82c85a4f5cb6f655b4..597a74ff79d24b11a7bf54d7dc91e5dfc6758ed1 100644 (file)
@@ -102,7 +102,7 @@ static std::string iconFile()
 
 YoinkApp::YoinkApp(int argc, char* argv[]) :
        Mf::Engine(argc, argv, configFiles(), PACKAGE_STRING, iconFile()),
-       music("NightFusionIntro"),
+       music("BeatTheCube"),
        punchSound("RobotPunch")
 {
        Mf::dispatcher::addHandler("video.context_recreated",
@@ -116,27 +116,18 @@ YoinkApp::YoinkApp(int argc, char* argv[]) :
        heroine = Character::alloc("RobotTrooper");
        heroine->getAnimation().startSequence("Run");
 
-       font = new TilemapFont;
+       Mf::Scalar a[6] = {0.0, 1.5, -0.5, 3.0, -1.5, 1.0};
+       interp.init(a, 2.0, Mf::Interpolator::OSCILLATE);
 
-       Mf::Scalar coeffs[4];
-       coeffs[0] = 0.0;
-       coeffs[1] = 1.5;
-       coeffs[2] = -0.5;
-       coeffs[3] = 1.0;
-       interp.init(coeffs, 1.0, Mf::Interpolator::OSCILLATE);
+       Mf::Scalar b[2] = {1.0, 0.0};
+       fadeIn.init(b, 1.0);
 
-       Mf::Scalar coeff[2] = {1.0, 0.0};
-       fadeIn.init(coeff, 0.1);
-
-       testScene = Mf::Scene::alloc("Test");
-       heroine->treeNode = testScene->getOctree()->insert(heroine);
+       octree = Mf::loadScene("Test");
+       heroine->treeNode = octree->insert(heroine);
 }
 
 YoinkApp::~YoinkApp()
 {
-       //delete heroine;
-       delete font;
-
        Mf::dispatcher::removeHandler(this);
 }
 
@@ -175,15 +166,15 @@ void YoinkApp::setupGL()
 
 void YoinkApp::contextRecreated(const Mf::Notification* note)
 {
-       // Whenever the context and a new one created, it probably won't contain our
-       // state so we need to set that up again.
+       // Whenever the context is destroyed and a new one created, it probably
+       // won't contain our state so we need to set that up again.
        setupGL();
 }
 
 
 void YoinkApp::update(Mf::Scalar t, Mf::Scalar dt)
 {
-       //dt *= 0.5;
+       dt *= 0.7;
 
        music.update(t, dt);
        fadeIn.update(dt);
@@ -191,15 +182,15 @@ void YoinkApp::update(Mf::Scalar t, Mf::Scalar dt)
        heroine->update(t, dt);
 
        // reinsert heroine
-       heroine->treeNode = testScene->getOctree()->reinsert(heroine, heroine->treeNode);
-       testScene->getOctree()->print(heroine->treeNode);
+       heroine->treeNode = octree->reinsert(heroine, heroine->treeNode);
+       octree->print(heroine->treeNode);
        
        //camera.lookAt(heroine->getSphere().point);
        camera.setPosition(Mf::Vector3(-heroine->current.position[0], -heroine->current.position[1], -256));
 
        interp.update(dt);
-       hud.setBar1Progress(interp.getValue());
-       hud.setBar2Progress(1.0 - interp.getValue());
+       hud.setBar1Progress(interp.getState(dt));
+       hud.setBar2Progress(1.0 - interp.getState(dt));
 }
 
 
@@ -212,7 +203,11 @@ void YoinkApp::draw(Mf::Scalar alpha)
 
        // DRAW THE SCENE
        Mf::Texture::resetBind();
-       testScene->draw(alpha, camera);
+
+       glEnableClientState(GL_VERTEX_ARRAY);
+       glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+
+       octree->drawIfVisible(alpha, camera.getFrustum());
 
        //heroine->draw(alpha);
        heroine->getAabb().draw();
@@ -267,11 +262,6 @@ void YoinkApp::handleEvent(const Mf::Event& event)
                                punchSound.play();
                                break;
                        }
-                       else if (event.key.keysym.sym == SDLK_r)
-                       {
-                               testScene->refresh();
-                               break;
-                       }
                        else if (event.key.keysym.sym == SDLK_t)
                        {
                                Mf::dispatcher::dispatch("video.context_recreated");
@@ -342,7 +332,8 @@ int main(int argc, char* argv[])
        {
                Mf::logError("unhandled exception: <<%s>>", e.what());
                Mf::logInfo("it's time to crash now :-(");
-               status = 1;
+               //status = 1;
+               throw e;
        }
 
        std::cout << std::endl << "Goodbye..." << std::endl << std::endl;
This page took 0.021446 seconds and 4 git commands to generate.