DetailLayer ConvertLayer(uint ti, TETerrainMaterialData.UndergrowthDetailLayer ugdl)
    {
        var dl = new DetailLayer();

        dl.widthHeightScale = ugdl.widthHeightScale;
        dl.probability      = ugdl.probability;
        dl.templateIndex    = ti;
        return(dl);
    }
	public void SetDetailLayer( int id, DetailLayer newLayer ){
		m_CurrentDetailLayerSet[id] = newLayer;	
	}
	public void AddNewDetailLayer(){
		if ( currentTerrainInstance != null ){
			DetailPrototype[] details = currentTerrainInstance.terrainData.detailPrototypes;
			DetailPrototype[] newDetails = new DetailPrototype[details.Length+1];
			for ( int i = 0; i < details.Length; i++ ){
				newDetails[i] = details[i];
			}
			newDetails[newDetails.Length-1] = new DetailPrototype();
			currentTerrainInstance.terrainData.detailPrototypes = newDetails;
			int[,] newDetailmap = new int[currentTerrainInstance.terrainData.detailWidth, currentTerrainInstance.terrainData.detailHeight];
			for ( int i = 0; i < currentTerrainInstance.terrainData.detailWidth; i++ ){
				for ( int j = 0; j < currentTerrainInstance.terrainData.detailHeight; j++ ){	
					newDetailmap[i,j] = 0;
				}
			}
			currentTerrainInstance.terrainData.SetDetailLayer( 0, 0, newDetails.Length-1, newDetailmap );
			
			if ( m_CurrentDetailLayerSet.Count < newDetails.Length ){
				DetailLayer newLayer = new DetailLayer();
				List<string> bundleList = new List<string>(m_LoadedVegetation.Keys);
				if ( bundleList.Count > 0 ){
					List<string> imageList = new List<string>(m_LoadedVegetation[bundleList[0]].Keys);
					newLayer.path = bundleList[0] + "/" + imageList[0];
					newLayer.image = m_LoadedVegetation[bundleList[0]][imageList[0]];
				}
				m_CurrentDetailLayerSet.Add ( newLayer );	
			}
		} else {
			DetailLayer newLayer = new DetailLayer();
			List<string> bundleList = new List<string>(m_LoadedVegetation.Keys);
			if ( bundleList.Count > 0 ){
				List<string> imageList = new List<string>(m_LoadedVegetation[bundleList[0]].Keys);
				newLayer.path = bundleList[0] + "/" + imageList[0];
				newLayer.image = m_LoadedVegetation[bundleList[0]][imageList[0]];
			}
			m_CurrentDetailLayerSet.Add ( newLayer );
		}
	}