public static GOMesh PreloadLine(GOFeature feature) { if (feature.convertedGeometry.Count == 2 && feature.convertedGeometry[0].Equals(feature.convertedGeometry[1])) { return(null); } GOMesh preMesh = new GOMesh(); GOLineMesh lineMesh = new GOLineMesh(feature.convertedGeometry); lineMesh.width = feature.renderingOptions.lineWidth; preMesh = lineMesh.CreatePremesh(); if (feature.height > 0) { float h = feature.height; if (GOMap.GOLink) { h += GOFeature.BuildingElevationOffset; } preMesh = SimpleExtruder.SliceExtrudePremesh(preMesh, h + Noise(), 4f, 4f, 10f); } if (feature.renderingOptions.outlineWidth > 0) { lineMesh.width = feature.renderingOptions.lineWidth + feature.layer.defaultRendering.outlineWidth; preMesh.secondaryMesh = lineMesh.CreatePremesh(); } return(preMesh); }
public static GOMesh PreloadLine(GOFeature feature) { if (feature.convertedGeometry.Count == 2 && feature.convertedGeometry[0].Equals(feature.convertedGeometry[1])) { return(null); } GOMesh preMesh = new GOMesh(); GOLineMesh lineMesh = new GOLineMesh(feature, true); lineMesh.width = feature.renderingOptions.lineWidth * feature.goTile.worldScale; preMesh = lineMesh.CreatePremesh(); feature.isLoop = lineMesh.isLoop; // GORoad road = new GORoad (feature, 25, 1, 0); // road.computeRoad (); // preMesh = road.goMesh; if (feature.goTile.useElevation && feature.height == 0) { feature.height += GOFeature.RoadsHeightForElevation; } if (feature.height > 0) { float h = feature.height * feature.goTile.worldScale; if (feature.goTile.useElevation) { h += GOFeature.BuildingElevationOffset; } preMesh = SimpleExtruder.ExtrudePremesh(preMesh, h + Noise(), false); } if (feature.renderingOptions.outlineWidth > 0 && !feature.goTile.useElevation) { lineMesh.width = (feature.renderingOptions.lineWidth + feature.layer.defaultRendering.outlineWidth) * feature.goTile.worldScale; preMesh.secondaryMesh = lineMesh.CreatePremesh(); if (feature.height > 0) { float h = feature.height * feature.goTile.worldScale; if (feature.goTile.useElevation) { h += GOFeature.BuildingElevationOffset; } preMesh.secondaryMesh = SimpleExtruder.ExtrudePremesh(preMesh.secondaryMesh, h + Noise(), false); } } return(preMesh); }
//Draws a line given a list of vector 3 public GameObject dropLine(List <Vector3> polyline, float witdh, float height, Material material, GOUVMappingStyle uvMappingStyle, bool curved = false) { GameObject line = new GameObject("Polyline"); MeshFilter filter = line.AddComponent <MeshFilter>(); MeshRenderer renderer = line.AddComponent <MeshRenderer>(); GOLineMesh lineMesh = new GOLineMesh(polyline, curved); lineMesh.width = witdh; lineMesh.load(line); GOMesh goMesh = lineMesh.CreatePremesh(); goMesh.uvMappingStyle = uvMappingStyle; if (height > 0) { goMesh = SimpleExtruder.SliceExtrudePremesh(goMesh, height, 4f, 4f, 10f); } filter.sharedMesh = goMesh.ToMesh(); renderer.material = material; line.AddComponent <MeshCollider> (); return(line); }