void CDemo::run() { core::dimension2d<u32> resolution ( 800, 600 ); if ( driverType == video::EDT_BURNINGSVIDEO || driverType == video::EDT_SOFTWARE ) { resolution.Width = 640; resolution.Height = 480; } irr::SIrrlichtCreationParameters params; params.DriverType=driverType; params.WindowSize=resolution; params.Bits=32; params.Fullscreen=fullscreen; params.Stencilbuffer=shadows; params.Vsync=vsync; params.AntiAlias=aa; params.EventReceiver=this; device = createDeviceEx(params); if (!device) return; if (device->getFileSystem()->existFile("irrlicht.dat")) device->getFileSystem()->addFileArchive("irrlicht.dat"); else device->getFileSystem()->addFileArchive("../../media/irrlicht.dat"); if (device->getFileSystem()->existFile("map-20kdm2.pk3")) device->getFileSystem()->addFileArchive("map-20kdm2.pk3"); else device->getFileSystem()->addFileArchive("../../media/map-20kdm2.pk3"); video::IVideoDriver* driver = device->getVideoDriver(); scene::ISceneManager* smgr = device->getSceneManager(); gui::IGUIEnvironment* guienv = device->getGUIEnvironment(); device->setWindowCaption(L"Irrlicht Engine Demo"); // set ambient light smgr->setAmbientLight ( video::SColorf ( 0x00c0c0c0 ) ); wchar_t tmp[255]; // draw everything s32 now = 0; s32 lastfps = 0; sceneStartTime = device->getTimer()->getTime(); while(device->run() && driver) { if (device->isWindowActive()) { #ifdef USE_IRRKLANG // update 3D position for sound engine scene::ICameraSceneNode* cam = smgr->getActiveCamera(); if (cam && irrKlang) irrKlang->setListenerPosition(cam->getAbsolutePosition(), cam->getTarget()); #endif // load next scene if necessary now = device->getTimer()->getTime(); if (now - sceneStartTime > timeForThisScene && timeForThisScene!=-1) switchToNextScene(); createParticleImpacts(); driver->beginScene(timeForThisScene != -1, true, backColor); smgr->drawAll(); guienv->drawAll(); driver->endScene(); // write statistics const s32 nowfps = driver->getFPS(); swprintf(tmp, 255, L"%ls fps:%3d triangles:%0.3f mio/s", driver->getName(), driver->getFPS(), driver->getPrimitiveCountDrawn(1) * (1.f / 1000000.f)); statusText->setText(tmp); if ( nowfps != lastfps ) { device->setWindowCaption(tmp); lastfps = nowfps; } } } device->drop(); }
void CDemo::run() { core::dimension2d<u32> resolution ( 800, 600 ); if ( driverType == video::EDT_BURNINGSVIDEO || driverType == video::EDT_SOFTWARE ) { resolution.Width = 640; resolution.Height = 480; } irr::SIrrlichtCreationParameters params; params.DriverType=driverType; params.WindowSize=resolution; params.Bits=32; params.Fullscreen=fullscreen; params.Stencilbuffer=shadows; params.Vsync=vsync; params.AntiAlias=aa; params.EventReceiver=this; device = createDeviceEx(params); if (!device) return; if (device->getFileSystem()->existFile("irrlicht.dat")) device->getFileSystem()->addFileArchive("irrlicht.dat", true, true, io::EFAT_ZIP); else device->getFileSystem()->addFileArchive(IRRLICHT_MEDIA_PATH "irrlicht.dat", true, true, io::EFAT_ZIP); if (device->getFileSystem()->existFile("map-20kdm2.pk3")) device->getFileSystem()->addFileArchive("map-20kdm2.pk3", true, true, io::EFAT_ZIP); else device->getFileSystem()->addFileArchive(IRRLICHT_MEDIA_PATH "map-20kdm2.pk3", true, true, io::EFAT_ZIP); video::IVideoDriver* driver = device->getVideoDriver(); scene::ISceneManager* smgr = device->getSceneManager(); gui::IGUIEnvironment* guienv = device->getGUIEnvironment(); device->setWindowCaption(L"Irrlicht Engine Demo"); // set ambient light smgr->setAmbientLight ( video::SColorf ( 0x00c0c0c0 ) ); // wchar_t tmp[255]; // RakNet startup char dest[1024]; memset(dest,0,sizeof(dest)); wcstombs(dest, playerName.c_str(), playerName.size()); InstantiateRakNetClasses(); // Hook RakNet stuff into this class playerReplica->playerName=RakNet::RakString(dest); playerReplica->demo=this; replicaManager3->demo=this; CalculateSyndeyBoundingBox(); // draw everything s32 now = 0; sceneStartTime = device->getTimer()->getTime(); while(device->run() && driver) { // RakNet: Render even if not active, multiplayer never stops //if (device->isWindowActive()) { #ifdef USE_IRRKLANG // update 3D position for sound engine scene::ICameraSceneNode* cam = smgr->getActiveCamera(); if (cam && irrKlang) irrKlang->setListenerPosition(cam->getAbsolutePosition(), cam->getTarget()); #endif // load next scene if necessary now = device->getTimer()->getTime(); if (now - sceneStartTime > timeForThisScene && timeForThisScene!=-1) switchToNextScene(); createParticleImpacts(); driver->beginScene(timeForThisScene != -1, true, backColor); smgr->drawAll(); guienv->drawAll(); driver->endScene(); /* // write statistics static s32 lastfps = 0; s32 nowfps = driver->getFPS(); swprintf(tmp, 255, L"%ls fps:%3d triangles:%0.3f mio", driver->getName(), driver->getFPS(), (f32) driver->getPrimitiveCountDrawn( 1 ) * ( 1.f / 1000000.f ) ); if ( nowfps != lastfps ) { device->setWindowCaption ( tmp ); lastfps = nowfps; } */ RakNet::RakString curMsg = GetCurrentMessage(); if (curMsg.IsEmpty()==false) { wchar_t dest[1024]; memset(dest,0,sizeof(dest)); mbstowcs(dest, curMsg.C_String(), curMsg.GetLength()); statusText->setText(dest); } else { // statusText->setText(tmp); statusText->setText(0); } } // RakNet per tick update UpdateRakNet(); } // RakNet shutdown DeinitializeRakNetClasses(); device->drop(); }