Пример #1
0
        /// <summary>
        /// The CreateContiniousWall.
        /// </summary>
        /// <param name="scale">The scale<see cref="float"/>.</param>
        /// <param name="parent">The parent<see cref="Transform"/>.</param>
        /// <param name="lineStrings">The lineStrings<see cref="ReadOnlyCollection{LineString}"/>.</param>
        private void CreateContiniousWall(float scale, Transform parent, dynamic lineStrings)
        {
            foreach (var lines in lineStrings)
            {
                Vector3[] positions;
                var       lineRenderer = MultiLineStringHandler.CreateLineRenderer(_wallPrefab, parent);
                MultiLineStringHandler.UpdateLineRendererPoints(lines, out positions, scale, lineRenderer);

                buildTowers(parent, positions, scale);
            }
        }
Пример #2
0
        /// <summary>
        /// The GetMeshVertices.
        /// </summary>
        /// <param name="poly">The poly<see cref="Polygon"/>.</param>
        /// <param name="offset">The offset<see cref="Vector2"/>.</param>
        /// <param name="scale">The scale<see cref="int"/>.</param>
        /// <returns>The <see cref="Vector3[]"/>.</returns>
        public static Vector3[] GetMeshVertices(dynamic poly, out Vector2 offset, float scale)
        {
            IList <Vector3> meshVertices = new List <Vector3>();
            var             lineString   = MultiLineStringHandler.GetCoordinatesFromPoly(poly);

            offset = new Vector2(0.0f - float.Parse(lineString[0][0].ToString()), 0.0f - float.Parse(lineString[0][1].ToString())) * scale;
            foreach (var geoPosition in lineString)
            {
                var unityLatitude  = (float)(scale * float.Parse(geoPosition[0].ToString())) + offset.x;
                var unityLongitude = (float)(scale * float.Parse(geoPosition[1].ToString())) + offset.y;
                meshVertices.Add(new Vector2(unityLatitude, unityLongitude));
            }

            return(meshVertices.Reverse().ToArray());
        }
Пример #3
0
        /// <summary>
        /// The CreateWallsSeparately.
        /// </summary>
        /// <param name="scale">The scale<see cref="float"/>.</param>
        /// <param name="parent">The parent<see cref="Transform"/>.</param>
        /// <param name="lineStrings">The lineStrings<see cref="ReadOnlyCollection{LineString}"/>.</param>
        private void CreateWallsSeparately(float scale, Transform parent, dynamic lineStrings)
        {
            foreach (var lines in lineStrings)
            {
                Vector3[] positions = MultiLineStringHandler.GetPositionsFromLineString(lines, scale);

                for (int i = 0; i < positions.Length - 1; i++)
                {
                    var lineRenderer = MultiLineStringHandler.CreateLineRenderer(_wallPrefab, parent);
                    lineRenderer.positionCount = 2;
                    lineRenderer.SetPosition(0, positions[i]);
                    lineRenderer.SetPosition(1, positions[i + 1]);
                }

                buildTowers(parent, positions, scale);
            }
        }
Пример #4
0
        /// <summary>
        /// The Create.
        /// </summary>
        /// <param name="collection">The collection<see cref="FeatureCollection"/>.</param>
        /// <param name="scale">The scale<see cref="float"/>.</param>
        /// <param name="city">The city<see cref="GameObject"/>.</param>
        public override void Create(dynamic collection, float scale, GameObject city)
        {
            var _parent       = CityGeneratorHelper.GetParentTransformFromCity(city, CityElements.Rivers);
            var riversFeature = CityGeneratorHelper.GetFeatureBasedOnPropertyValueName(collection, idName);

            if (riversFeature == null)
            {
                return;
            }
            var polygons = CityGeneratorHelper.GetPolygonsFromFeature(riversFeature);

            foreach (var poly in polygons)
            {
                Vector3[] positions;
                var       lineRenderer = MultiLineStringHandler.CreateLineRenderer(_riverPrefab, _parent);
                MultiLineStringHandler.UpdateLineRendererPoints(poly, out positions, scale, lineRenderer);
            }
        }