Exemplo n.º 1
0
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;
}