-void YoinkApp::update(Mf::Scalar t, Mf::Scalar dt)
-{
- //dt *= 0.7;
-
- fadeIn.update(dt);
- camera.update(t, dt);
- heroine->update(t, dt);
-
- // reinsert heroine
- 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));
-
- Mf::Vector3 heroinePosition;
- Mf::promoteVector(heroinePosition, heroine->current.position);
- Mf::Sound::setListenerPosition(heroinePosition);
-
- interp.update(dt);
- hud.setBar1Progress(interp.getState(dt));
- hud.setBar2Progress(1.0 - interp.getState(dt));
-}
-
-
-void YoinkApp::draw(Mf::Scalar alpha)
-{
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadMatrix(camera.getModelviewMatrix().data());
-
- // DRAW THE SCENE
- Mf::Texture::resetBind();
-
- glEnableClientState(GL_VERTEX_ARRAY);
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-
- octree->drawIfVisible(alpha, camera.getFrustum());
-
- //heroine->draw(alpha);
- heroine->getAabb().draw();
-
- hud.draw();
-
- // DRAW FADE
- glEnable(GL_BLEND);
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadIdentity();
- glColor4f(0.0f, 0.0f, 0.0f, fadeIn.getState(alpha));
- Mf::Texture::resetBind();
-
- //glRectf(-1.0f, -1.0f, 1.0f, 1.0f);
- glBegin(GL_QUADS);
- glVertex3f(-1.0, -1.0, -0.1);
- glVertex3f(1.0, -1.0, -0.1);
- glVertex3f(1.0, 1.0, -0.1);
- glVertex3f(-1.0, 1.0, -0.1);
- glEnd();
-
- glDisable(GL_BLEND);
-
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
-}
-
-void YoinkApp::handleEvent(const Mf::Event& event)
-{
- switch (event.type)
- {
- case SDL_KEYDOWN:
- if (event.key.keysym.sym == SDLK_ESCAPE)
- {
- stop();
- break;
- }
- else if (event.key.keysym.sym == SDLK_f)
- {
- getVideo().toggleFull();
- break;
- }
- else if (event.key.keysym.sym == SDLK_SPACE)
- {
- heroine->getAnimation().startSequence("Punch");
- punchSound.play();
- break;
- }
- else if (event.key.keysym.sym == SDLK_t)
- {
- Mf::dispatcher::dispatch("video.context_recreated");
- break;
- }
- else if (event.key.keysym.sym == SDLK_p)
- {
- music.toggle();
- break;
- }
- else if (event.key.keysym.sym == SDLK_l)
- {
- getVideo().toggleCursorGrab();
- getVideo().toggleCursorVisible();
- break;
- }
-
- case SDL_KEYUP:
- heroine->handleEvent(event);
-
- case SDL_MOUSEMOTION:
- case SDL_MOUSEBUTTONDOWN:
- camera.handleEvent(event);
- break;
-
- case SDL_QUIT:
- stop();
- break;
-
- 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) / double(event.resize.h), 32.0, 2500.0);
- camera.uploadProjectionToGL();
- break;
- }
-}
-