void TerrainLattice::SaveTerrain(bool bHeightMap, bool bTextures) { bool bSaveConfigFile = false; TerrainTileCacheMap_type::iterator itCurCP, itEndCP = m_pCachedTerrains.end(); for( itCurCP = m_pCachedTerrains.begin(); itCurCP != itEndCP; ++ itCurCP) { Terrain* pTerrain = (*itCurCP).second.pTerrain; if(pTerrain->IsModified()) { if(pTerrain->IsEmpty()){ pTerrain->SetModified(false, MODIFIED_ALL); } else { int x,y; pTerrain->GetLatticePosition(x,y); string sConfig = CGlobals::GetWorldInfo()->GetTerrainConfigFile(x,y); if(pTerrain->m_sConfigFile != sConfig) { pTerrain->m_sConfigFile = sConfig; pTerrain->SetModified(true, MODIFIED_CONFIGURATION | MODIFIED_TEXTURE); if (m_pLoader) { m_pLoader->UpdateTileConfigFile(x,y, sConfig); } bSaveConfigFile = true; } pTerrain->SaveToFile(); pTerrain->SetModified(false, MODIFIED_ALL); } } } // save global world config file if any terrain tile is newly created. if(m_bIsGlobalConfigModified || bSaveConfigFile) { if(m_pLoader){ m_pLoader->SaveWorldConfigFile(); } } m_bIsGlobalConfigModified = false; }