]> Dogcows Code - chaz/yoink/blobdiff - src/YoinkApp.cc
new timer class
[chaz/yoink] / src / YoinkApp.cc
index 6cddf1a4d528578f4da50ec622bc217854cd9e81..a9b8f1328068029f42442cfa16630234db76f3a3 100644 (file)
 #include <iostream>
 #include <string>
 
-#include <boost/bind.hpp>
-
 #include <Moof/Exception.hh>
 #include <Moof/Log.hh>
 #include <Moof/Math.hh>
 #include <Moof/OpenGL.hh>
 #include <Moof/Settings.hh>
+#include <Moof/Thread.hh>
 #include <Moof/Timer.hh>
 #include <Moof/Video.hh>
 
@@ -100,9 +99,31 @@ static std::string iconFile()
 }
 
 
+void YoinkApp::myFunc(Mf::Timer& timer, Mf::Scalar t)
+{
+       std::cout << "timer: " << t << std::endl;
+       
+       //timer.invalidate();
+}
+
+int YoinkApp::myThread()
+{
+       Mf::Scalar timer = Mf::Timer::getTicks();
+
+       for (;;)
+       {
+               std::cout << "thread awake: " << Mf::Timer::getTicks() << std::endl;
+
+               timer += 3.0;
+               Mf::Timer::sleep(timer, true);
+       }
+       return 0;
+}
+
+
 YoinkApp::YoinkApp(int argc, char* argv[]) :
        Mf::Engine(argc, argv, configFiles(), PACKAGE_STRING, iconFile()),
-       music("BeatTheCube"),
+       music("NightFusionIntro"),
        punchSound("RobotPunch")
 {
        Mf::dispatcher::addHandler("video.context_recreated",
@@ -122,8 +143,13 @@ YoinkApp::YoinkApp(int argc, char* argv[]) :
        Mf::Scalar b[2] = {1.0, 0.0};
        fadeIn.init(b, 1.0);
 
-       testScene = Mf::Scene::alloc("Test");
-       heroine->treeNode = testScene->getOctree()->insert(heroine);
+       octree = Mf::loadScene("Test");
+       heroine->treeNode = octree->insert(heroine);
+
+       //myTimer.init(boost::bind(&YoinkApp::myFunc, this, _1, _2),
+                       //0.0, Mf::Timer::REPEAT);
+       //Mf::Thread thread = Mf::detachFunction(boost::bind(&YoinkApp::myThread, this));
+       //std::cout << "thread " << thread << " detached." << std::endl;
 }
 
 YoinkApp::~YoinkApp()
@@ -174,19 +200,19 @@ void YoinkApp::contextRecreated(const Mf::Notification* note)
 
 void YoinkApp::update(Mf::Scalar t, Mf::Scalar dt)
 {
-       //dt *= 0.1;
+       //dt *= 0.7;
 
-       music.update(t, dt);
        fadeIn.update(dt);
        camera.update(t, 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));
+       camera.setPosition(Mf::Vector3(-heroine->current.position[0],
+                               -heroine->current.position[1], -256));
 
        interp.update(dt);
        hud.setBar1Progress(interp.getState(dt));
@@ -203,7 +229,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();
@@ -258,11 +288,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");
@@ -295,7 +320,8 @@ void YoinkApp::handleEvent(const Mf::Event& event)
                case SDL_VIDEORESIZE:
                        glViewport(0, 0, event.resize.w, event.resize.h);
                        hud.resize(event.resize.w, event.resize.h);
-                       camera.setProjection(cml::rad(60.0), double(event.resize.w / event.resize.h), 32.0, 2500.0);
+                       camera.setProjection(cml::rad(60.0),
+                               double(event.resize.w) / double(event.resize.h), 32.0, 2500.0);
                        camera.uploadProjectionToGL();
                        break;
        }
This page took 0.020117 seconds and 4 git commands to generate.