void spreadroomlight(int x, int y, int roomno) { if (inbounds(x,y) && !loc_statusp(x,y,LIT) && Level->site[x][y].roomnumber == roomno) { lightspot(x,y); spreadroomlight(x+1,y,roomno); spreadroomlight(x,y+1,roomno); spreadroomlight(x-1,y,roomno); spreadroomlight(x,y-1,roomno); } }
bool WorldLoader::CreateTestWorld(Game *pGame) { SceneManager * pSceneMgr = pGame->getRenderer()->getSceneManager(); // PC: Note, ogre likes the shadow setup to happen first, because it affects the model loading?? weird.. check the manual // setup the shadow technique to use.. stencil does nice self-shadowing but its a bit slow. pSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_MODULATIVE); //mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE); //pSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE); //mSceneMgr->setShadowTextureSelfShadow(true); //pSceneMgr->setShadowTextureSize(1024); //mSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_ADDITIVE); /* LiSPSMShadowCameraSetup* lispsm = new LiSPSMShadowCameraSetup(); lispsm->setOptimalAdjustFactor(0.3); mSceneMgr->setShadowCameraSetup(ShadowCameraSetupPtr(lispsm)); mSceneMgr->setShadowColour(ColourValue(0.5, 0.5, 0.5)); */ srand(1027); #ifdef _DEBUG for(int i = 0; i < 20; i++) #else for(int i = 0; i < 2000; i++) #endif { CreateRandomRobot(pGame); } for(int i = 0; i < 4; i++) { //CreateRandomBox(pGame); } //CreateArena(pGame); //CreateCameraBox(pGame); /* for(int i = 0; i < 40; i++) { CreateRandomHouse(pGame); } for(int i = 0; i < 40; i++) { CreateRandomBarrel(pGame); } */ #ifndef _TERRAIN_ Plane plane(Vector3::UNIT_Y,0); MeshManager::getSingleton().createPlane("ground",ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane,150000,150000,20,20,true,1,500,500,Vector3::UNIT_Z); Entity *ent = pSceneMgr->createEntity("GroundEntity", "ground"); SceneNode* planeNode = pSceneMgr->getRootSceneNode()->createChildSceneNode(); planeNode->attachObject(ent); //ent->setMaterialName("Examples/GrassFloor"); ent->setMaterialName("PAC/Floor"); //ent->setMaterialName("PAC/Floor"); ent->setCastShadows(false); #else pSceneMgr->setWorldGeometry("terrain.cfg"); #endif Viewport * pView = pGame->getRenderer()->getRenderWindow()->getViewport(0); pView->setBackgroundColour(ColourValue(0.3f,0.3f,0.3f,1.0f)); //pSceneMgr->setSkyDome(true, "Examples/CloudySky", 5, 8); //pSceneMgr->setSkyBox(true,"Examples/CloudyNoonSkyBox",50); // Set ambient light pSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5)); // Create a light Light* l = pSceneMgr->createLight("MainLight"); l->setType(Light::LightTypes::LT_DIRECTIONAL); Vector3 lightpos(20,140,50); Vector3 lightspot(0,0,0); Vector3 lightdir = lightspot - lightpos; l->setDirection(lightdir); l->setPosition(lightpos); return true; };