Example #1
0
    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);
    }
Example #2
0
	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);
	}
Example #3
0
    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();
    }