68 lines
1.4 KiB
C++
68 lines
1.4 KiB
C++
#include "CMain.h"
|
|
|
|
using namespace lf;
|
|
|
|
CMain::CMain(render::IRenderWindow* win)
|
|
: rwin(win),
|
|
rl3d(win->getRenderLayer3D()),
|
|
smgr(rl3d->getSceneManager()),
|
|
cam(0),
|
|
camController(0),
|
|
quitNow(false)
|
|
{
|
|
rwin->addKeyListener(this);
|
|
setupScene();
|
|
}
|
|
|
|
CMain::~CMain()
|
|
{
|
|
rl3d->remove(cam);
|
|
smgr->remove(camController);
|
|
cam->drop();
|
|
camController->drop();
|
|
|
|
smgr->getRootSceneNode()->removeAllChildren(true);
|
|
|
|
rwin->removeKeyListener(this);
|
|
}
|
|
|
|
void CMain::run()
|
|
{
|
|
quitNow = false;
|
|
|
|
while (!quitNow && CLFRender::getInstance().update())
|
|
{
|
|
// main loop
|
|
}
|
|
}
|
|
|
|
void CMain::setupScene()
|
|
{
|
|
cam = new scene::C3DCamera(rwin,
|
|
core::PI / 3.0f,
|
|
1.0f,
|
|
1000.0f,
|
|
true);
|
|
cam->setBackgroundColor(core::CColorI(255, 255, 240, 0));
|
|
cam->replace(new render::CRenderStateLighting(false));
|
|
cam->setPosition(core::vector3df(0.0f, 0.0f, -30.0f));
|
|
cam->setTarget(core::vector3df(0.0f, 0.0f, 0.0f));
|
|
|
|
rl3d->add(cam);
|
|
smgr->addSceneNode(cam);
|
|
|
|
// handle camera control
|
|
camController = new scene::CFPSController(rwin, cam);
|
|
smgr->add( camController );
|
|
}
|
|
|
|
void CMain::keyPressed(input::CKeyEvent& event)
|
|
{
|
|
switch (event.getKey())
|
|
{
|
|
case input::KEY_ESCAPE:
|
|
quitNow = true;
|
|
break;
|
|
}
|
|
}
|