BOOL CEditor::Load(LPCTSTR lpszPathName) { SetCursor(LoadCursor(NULL, IDC_WAIT)); RestoreCurrentDirectory(); mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(mSceneManager, Ogre::Terrain::ALIGN_X_Z, TERRAIN_SIZE, TERRAIN_WORLD_SIZE); mTerrainGroup->setFilenameConvention(TERRAIN_FILE_PREFIX, TERRAIN_FILE_SUFFIX); mTerrainGroup->setOrigin(mTerrainPos); // Important to set these so that the terrain knows what to use for derived (non-realtime) data mTerrainGlobals->setLightMapDirection(mTerrainLight->getDerivedDirection()); mTerrainGlobals->setCompositeMapAmbient(mSceneManager->getAmbientLight()); mTerrainGlobals->setCompositeMapDiffuse(mTerrainLight->getDiffuseColour()); //Ogre::TerrainMaterialGeneratorA::SM2Profile* matProfile = // static_cast<Ogre::TerrainMaterialGeneratorA::SM2Profile*>(mTerrainGlobals->getDefaultMaterialGenerator()->getActiveProfile()); //matProfile->setLightmapEnabled(false); //Configure default import settings for if we use imported image Ogre::Terrain::ImportData& defaultimp = mTerrainGroup->getDefaultImportSettings(); defaultimp.terrainSize = TERRAIN_SIZE; defaultimp.worldSize = TERRAIN_WORLD_SIZE; defaultimp.inputScale = 600; defaultimp.minBatchSize = 33; defaultimp.maxBatchSize = 65; // textures defaultimp.layerList.resize(1); defaultimp.layerList[0].worldSize = 100; defaultimp.layerList[0].textureNames.push_back("dirt_grayrocky_diffusespecular.dds"); defaultimp.layerList[0].textureNames.push_back("dirt_grayrocky_normalheight.dds"); DefineTerrain(0, 0, false); // sync load since we want everything in place when we start mTerrainGroup->loadAllTerrains(true); mTerrainGroup->freeTemporaryResources(); mSceneManager->setSkyBox(true, "Examples/CloudyNoonSkyBox"); //Ocean *_Ocean = new Ocean( 60.0f,mSceneManager,mCamera ); SetCursor(LoadCursor(NULL, IDC_ARROW)); mHaveLevel = true; return TRUE; }
void TerrainManager::CreateTerrain(std::string terrainName, std::string fileExtension, std::string heightMapFileName, std::string directionalLightName, Ogre::uint16 terrainSize, Ogre::Real worldSize, Ogre::Real inputScale) { mHeightMapFileName = heightMapFileName; mTerrainSize = terrainSize; mWorldSize = worldSize; mInputScale = inputScale; mTerrainGlobals = OGRE_NEW Ogre::TerrainGlobalOptions(); mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(GameManager::GetInstance()->GetSceneManager(), Ogre::Terrain::ALIGN_X_Z, mTerrainSize, mWorldSize); mTerrainGroup->setFilenameConvention(Ogre::String(terrainName), fileExtension); mTerrainGroup->setOrigin(Ogre::Vector3::ZERO); ConfigureTerrainDefaults(GameManager::GetInstance()->GetSceneManager()->getLight(directionalLightName)); for (long x = 0; x <= 0; ++x) for (long y = 0; y <= 0; ++y) DefineTerrain(x, y); // sync load since we want everything in place when we start mTerrainGroup->loadAllTerrains(true); if (mTerrainsImported) { Ogre::TerrainGroup::TerrainIterator ti = mTerrainGroup->getTerrainIterator(); while(ti.hasMoreElements()) { Ogre::Terrain* t = ti.getNext()->instance; InitBlendMaps(t); } //mTerrainGroup->saveAllTerrains(true); mTerrainsImported = false; } mTerrainGroup->freeTemporaryResources(); CreatePhysicsShape(); }