public void ParseNode(MegaXMLNode node) { MegaShapeOSMNode onode = new MegaShapeOSMNode(); for (int i = 0; i < node.values.Count; i++) { MegaXMLValue val = node.values[i]; switch (val.name) { case "id": //Debug.Log("id " + val.value); onode.id = ulong.Parse(val.value); break; case "lat": onode.pos.x = float.Parse(val.value); break; case "lon": onode.pos.z = float.Parse(val.value); break; } } osmnodes.Add(onode); }
public void ParseNode(MegaXMLNode node) { MegaShapeOSMNode onode = new MegaShapeOSMNode(); for ( int i = 0; i < node.values.Count; i++ ) { MegaXMLValue val = node.values[i]; switch ( val.name ) { case "id": //Debug.Log("id " + val.value); onode.id = ulong.Parse(val.value); break; case "lat": onode.pos.x = float.Parse(val.value); break; case "lon": onode.pos.z = float.Parse(val.value); break; } } osmnodes.Add(onode); }
public void LoadXML(string sxldata, float scale, bool cspeed, string name, float smoothness, bool combine) { GameObject root = new GameObject(); root.name = name; // Get bounds for imports AdjustPoints(scale); // Create a new shape object for each way for (int i = 0; i < osmways.Count; i++) { MegaShapeOSMWay way = osmways[i]; if (way.nodes.Count > 1 && CanImport(way)) { GameObject osmobj = new GameObject(); osmobj.transform.position = Vector3.zero; osmobj.transform.parent = root.transform; if (way.name.Length == 0) { way.name = "No Name"; } osmobj.name = GetName(way); //way.name; MegaShape shape = (MegaShape)osmobj.AddComponent <MegaShape>(); shape.smoothness = smoothness; //smooth; shape.drawHandles = false; MegaSpline spline = shape.splines[0]; //NewSpline(shape); spline.knots.Clear(); spline.constantSpeed = cspeed; spline.subdivs = 40; bool closed = false; int count = way.nodes.Count; if (way.nodes[0] == way.nodes[count - 1]) { count--; closed = true; } Vector3[] points = new Vector3[count]; for (int j = 0; j < count; j++) { MegaShapeOSMNode nd = FindNode(way.nodes[j]); points[j] = nd.pos; } Bounds bounds = new Bounds(points[0], Vector3.zero); for (int k = 0; k < points.Length; k++) { bounds.Encapsulate(points[k]); } for (int k = 0; k < points.Length; k++) { points[k] -= bounds.center; } osmobj.transform.position = bounds.center; //Vector3.zero; shape.BuildSpline(0, points, closed); shape.drawTwist = true; shape.makeMesh = false; shape.imported = true; shape.CoordAdjust(scale, new Vector3(1.0f, 1.0f, 1.0f), 0); shape.CalcLength(); //10); shape.stepdist = (shape.splines[0].length / shape.splines[0].knots.Count) / 1.0f; } } osmnodes.Clear(); osmways.Clear(); tags.Clear(); }