/// <summary>
 /// Constructor to create a clone of a LBTerrainGrass instance
 /// </summary>
 /// <param name="lbTerrainGrass"></param>
 public LBTerrainGrass(LBTerrainGrass lbTerrainGrass)
 {
     this.texture = lbTerrainGrass.texture;
     if (lbTerrainGrass.textureName == null)
     {
         this.textureName = string.Empty;
     }
     else
     {
         this.textureName = lbTerrainGrass.textureName;
     }
     this.minHeight              = lbTerrainGrass.minHeight;
     this.maxHeight              = lbTerrainGrass.maxHeight;
     this.minWidth               = lbTerrainGrass.minWidth;
     this.maxWidth               = lbTerrainGrass.maxWidth;
     this.healthyColour          = lbTerrainGrass.healthyColour;
     this.dryColour              = lbTerrainGrass.dryColour;
     this.noiseSpread            = lbTerrainGrass.noiseSpread;
     this.minPopulatedHeight     = lbTerrainGrass.minPopulatedHeight;
     this.maxPopulatedHeight     = lbTerrainGrass.maxPopulatedHeight;
     this.minInclination         = lbTerrainGrass.minInclination;
     this.maxInclination         = lbTerrainGrass.maxInclination;
     this.influence              = lbTerrainGrass.influence;
     this.minDensity             = lbTerrainGrass.minDensity;
     this.density                = lbTerrainGrass.density;
     this.detailRenderMode       = lbTerrainGrass.detailRenderMode;
     this.isCurvatureConcave     = lbTerrainGrass.isCurvatureConcave;
     this.curvatureDistance      = lbTerrainGrass.curvatureDistance;
     this.curvatureMinHeightDiff = lbTerrainGrass.curvatureMinHeightDiff;
     this.grassPlacingMode       = lbTerrainGrass.grassPlacingMode;
     this.grassPatchFadingMode   = lbTerrainGrass.grassPatchFadingMode;
     this.map                    = lbTerrainGrass.map;
     this.mapColour              = lbTerrainGrass.mapColour;
     this.mapTolerance           = lbTerrainGrass.mapTolerance;
     this.mapInverse             = lbTerrainGrass.mapInverse;
     this.mapToleranceBlendCurve = lbTerrainGrass.mapToleranceBlendCurve;
     this.mapIsPath              = lbTerrainGrass.mapIsPath;
     this.isDisabled             = lbTerrainGrass.isDisabled;
     if (lbTerrainGrass.filterList != null)
     {
         this.filterList = LBFilter.CopyList(lbTerrainGrass.filterList);
     }
     else
     {
         this.filterList = new List <LBFilter>();
     }
     this.showGrass            = lbTerrainGrass.showGrass;
     this.useNoise             = lbTerrainGrass.useNoise;
     this.noiseTileSize        = lbTerrainGrass.noiseTileSize;
     this.noiseOctaves         = lbTerrainGrass.noiseOctaves;
     this.grassPlacementCutoff = lbTerrainGrass.grassPlacementCutoff;
     if (lbTerrainGrass.lbTerrainDataList == null)
     {
         this.lbTerrainDataList = null;
     }
     else
     {
         this.lbTerrainDataList = new List <LBTerrainData>(lbTerrainGrass.lbTerrainDataList);
     }
     this.useMeshPrefab = lbTerrainGrass.useMeshPrefab;
     this.meshPrefab    = lbTerrainGrass.meshPrefab;
     if (lbTerrainGrass.meshPrefabName == null)
     {
         this.meshPrefabName = string.Empty;
     }
     else
     {
         this.meshPrefabName = lbTerrainGrass.meshPrefabName;
     }
     this.showPrefabPreview = lbTerrainGrass.showPrefabPreview;
     this.GUID = lbTerrainGrass.GUID;
 }
        // Class constructors
        public LBTerrainGrass()
        {
            this.texture = null;

            // Added v1.4.2 Beta 5b
            this.textureName = string.Empty;

            this.minHeight          = 0.5f;
            this.maxHeight          = 1f;
            this.minWidth           = 0.5f;
            this.maxWidth           = 1f;
            this.healthyColour      = new Color(67f / 255f, 249 / 255f, 42 / 255f, 1f);
            this.dryColour          = new Color(205f / 255f, 188f / 255f, 26f / 255f, 1f);
            this.noiseSpread        = 0.1f;
            this.minPopulatedHeight = 0.5f;
            this.maxPopulatedHeight = 1f;
            this.minInclination     = 0f;
            this.maxInclination     = 30f;
            this.influence          = 0.5f;
            this.minDensity         = 0;
            // So to a low default (2) max density to cater for mesh grasses.
            this.density              = 2;
            this.detailRenderMode     = DetailRenderMode.Grass;
            this.grassPlacingMode     = GrassPlacingMode.Height;
            this.grassPatchFadingMode = GrassPatchFadingMode.DontFade;

            // Added v2.0.7 Beta 6
            this.isCurvatureConcave     = false;
            this.curvatureMinHeightDiff = 1f;
            this.curvatureDistance      = 5f;

            // Added v1.1 Beta 7
            this.map          = null;
            this.mapColour    = UnityEngine.Color.green;
            this.mapTolerance = 1;
            this.mapInverse   = false;

            // Added v1.3.2 Beta 7b
            this.mapToleranceBlendCurve = LBMap.GetDefaultToleranceBlendCurve;
            this.mapIsPath = false;

            // Added v1.2.1
            this.isDisabled = false;

            // Added v1.3.0 Beta 3a
            this.showGrass = true;

            // Added v1.3.1 Beta 6a
            this.useNoise             = false;
            this.noiseTileSize        = 10f;
            this.noiseOctaves         = 5;
            this.grassPlacementCutoff = 0.5f;

            // Added v1.4.2 Beta 3f
            this.lbTerrainDataList = null;

            // Added v1.4.2 Beta 5c
            this.useMeshPrefab  = false;
            this.meshPrefab     = null;
            this.meshPrefabName = string.Empty;

            // Added v2.0.7 Beta 4a
            this.showPrefabPreview = false;

            // Added v2.0.0
            // Assign a unique identifier
            GUID = System.Guid.NewGuid().ToString();
        }