/// <summary>
        /// Converts a TreePrototype array into a LBTerrainTree list.
        /// Accepts an existing list to reduce GC (can't be NULL else
        /// would need to pass in as a ref.
        /// </summary>
        /// <param name="treePrototypes"></param>
        /// <param name="lbTerrainTreeList"></param>
        public static void ToLBTerrainTreeList(TreePrototype[] treePrototypes, List <LBTerrainTree> lbTerrainTreeList)
        {
            if (lbTerrainTreeList == null)
            {
                return;
            }
            else
            {
                lbTerrainTreeList.Clear();
            }

            int numTreePrototypes = (treePrototypes == null ? 0 : treePrototypes.Length);

            if (lbTerrainTreeList != null)
            {
                for (int i = 0; i < numTreePrototypes; i++)
                {
                    LBTerrainTree temp = new LBTerrainTree();
                    temp.bendFactor = treePrototypes[i].bendFactor;
                    temp.prefab     = treePrototypes[i].prefab;
                    lbTerrainTreeList.Add(temp);
                    temp = null;
                }
            }
        }
        /// <summary>
        /// Converts a TreePrototype array into a LBTerrainTree list
        /// Added version 1.2
        /// </summary>
        /// <param name="treePrototypes"></param>
        /// <returns></returns>
        public static List <LBTerrainTree> ToLBTerrainTreeList(TreePrototype[] treePrototypes)
        {
            List <LBTerrainTree> terrainTreeList = null;

            if (treePrototypes != null)
            {
                if (treePrototypes.Length > 0)
                {
                    terrainTreeList = new List <LBTerrainTree>();

                    for (int i = 0; i < treePrototypes.Length; i++)
                    {
                        LBTerrainTree temp = new LBTerrainTree();
                        temp.bendFactor = treePrototypes[i].bendFactor;
                        temp.prefab     = treePrototypes[i].prefab;
                        terrainTreeList.Add(temp);
                        temp = null;
                    }
                }
            }

            return(terrainTreeList);
        }
        /// <summary>
        /// Clone Constructor
        /// </summary>
        /// <param name="lbTerrainTree"></param>
        public LBTerrainTree(LBTerrainTree lbTerrainTree)
        {
            this.maxTreesPerSqrKm       = lbTerrainTree.maxTreesPerSqrKm;
            this.bendFactor             = lbTerrainTree.bendFactor;
            this.prefab                 = lbTerrainTree.prefab;
            this.minScale               = lbTerrainTree.minScale;
            this.maxScale               = lbTerrainTree.maxScale;
            this.treeScalingMode        = lbTerrainTree.treeScalingMode;
            this.lockWidthToHeight      = lbTerrainTree.lockWidthToHeight;
            this.minProximity           = lbTerrainTree.minProximity;
            this.minHeight              = lbTerrainTree.minHeight;
            this.maxHeight              = lbTerrainTree.maxHeight;
            this.minInclination         = lbTerrainTree.minInclination;
            this.maxInclination         = lbTerrainTree.maxInclination;
            this.treePlacingMode        = lbTerrainTree.treePlacingMode;
            this.isCurvatureConcave     = lbTerrainTree.isCurvatureConcave;
            this.curvatureDistance      = lbTerrainTree.curvatureDistance;
            this.curvatureMinHeightDiff = lbTerrainTree.curvatureMinHeightDiff;
            this.map                    = lbTerrainTree.map;
            this.mapColour              = lbTerrainTree.mapColour;
            this.mapTolerance           = lbTerrainTree.mapTolerance;
            this.mapInverse             = lbTerrainTree.mapInverse;
            this.useNoise               = lbTerrainTree.useNoise;
            this.noiseTileSize          = lbTerrainTree.noiseTileSize;
            this.noiseOffset            = lbTerrainTree.noiseOffset;
            this.treePlacementCutoff    = lbTerrainTree.treePlacementCutoff;
            this.mapToleranceBlendCurve = lbTerrainTree.mapToleranceBlendCurve;
            this.mapIsPath              = lbTerrainTree.mapIsPath;
            this.isDisabled             = lbTerrainTree.isDisabled;
            this.offsetY                = lbTerrainTree.offsetY;
            this.showTree               = lbTerrainTree.showTree;
            if (lbTerrainTree.filterList != null)
            {
                this.filterList = LBFilter.CopyList(lbTerrainTree.filterList);
            }
            else
            {
                this.filterList = new List <LBFilter>();
            }
            this.isTinted        = lbTerrainTree.isTinted;
            this.maxTintStrength = lbTerrainTree.maxTintStrength;
            this.tintColour      = lbTerrainTree.tintColour;
            if (lbTerrainTree.lbTerrainDataList == null)
            {
                this.lbTerrainDataList = null;
            }
            else
            {
                this.lbTerrainDataList = new List <LBTerrainData>(lbTerrainTree.lbTerrainDataList);
            }
            if (lbTerrainTree.prefabName == null)
            {
                this.prefabName = string.Empty;
            }
            else
            {
                this.prefabName = lbTerrainTree.prefabName;
            }
            this.showPrefabPreview = lbTerrainTree.showPrefabPreview;

            this.GUID = lbTerrainTree.GUID;
        }