bool IsPointMountains(Vector2 point, WG_Primitive_BaseNoise[] noises)
        {
            if (point.x > zoneWidth / 2 || point.x < -zoneWidth / 2 || point.y > zoneHeight / 2 || point.y < -zoneHeight / 2)
            {
                return(true);
            }

            bool  toReturn = false;
            float maxLevel = float.MinValue;

            for (int noiseIndex = 0; noiseIndex < noises.Length; noiseIndex++)
            {
                if (noises[noiseIndex].isActive)
                {
                    FloatBool    height = noises[noiseIndex].GetHeight(point);
                    additiveEnum mode   = noises[noiseIndex].additive;
                    float        level  = noises[noiseIndex].importantLevel;
                    if (height.boolVal && height.floatVal > mountainsLimit && level > maxLevel)
                    {
                        maxLevel = level;
                        if (mode == additiveEnum.Additive)
                        {
                            toReturn = true;
                        }
                        else
                        {
                            toReturn = false;
                        }
                    }
                }
            }

            return(toReturn);
        }
        public override FloatBool GetHeight(Vector2 position)
        {
            FloatBool toReturn = new FloatBool {
                boolVal = false, floatVal = 0.0f
            };

            if (!isActive)
            {
                return(toReturn);
            }
            else
            {
                Vector2 localPosition = new Vector2(transform.position.x, transform.position.z);
                if (mode == modeEnum.Area && Vector3.Distance(position, localPosition) > areaOuterRadius)
                {
                    return(toReturn);
                }
                toReturn.boolVal  = true;
                toReturn.floatVal = GetHeightInner(position);
                return(toReturn);
            }
        }