/// <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); } }
/// <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()); }
/// <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); } }
/// <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); } }