예제 #1
0
    public void ParseTag(MegaXMLNode node, MegaShapeOSMWay way)
    {
        MegaShapeOSMTag tag = null;

        for (int i = 0; i < node.values.Count; i++)
        {
            MegaXMLValue val = node.values[i];


            switch (val.name)
            {
            case "k":
                tag = FindTagK(val.value);

                if (tag == null)
                {
                    tag   = new MegaShapeOSMTag();
                    tag.k = val.value;
                    tags.Add(tag);
                }

                break;

            case "v":
                way.tags.Add(AddV(tag, val.value));
                break;
            }
        }
    }
예제 #2
0
    MegaShapeOSMTag AddV(MegaShapeOSMTag tag, string v)
    {
        if (tag != null)
        {
            for (int i = 0; i < tag.vs.Count; i++)
            {
                if (tag.vs[i].k == v)
                {
                    return(tag.vs[i]);
                }
            }
        }

        MegaShapeOSMTag vtag = new MegaShapeOSMTag();

        vtag.k = v;
        tag.vs.Add(vtag);
        return(vtag);
    }
예제 #3
0
	public void ParseTag(MegaXMLNode node, MegaShapeOSMWay way)
	{
		MegaShapeOSMTag tag = null;

		for ( int i = 0; i < node.values.Count; i++ )
		{
			MegaXMLValue val = node.values[i];


			switch ( val.name )
			{
				case "k":
					tag = FindTagK(val.value);

					if ( tag == null )
					{
						tag = new MegaShapeOSMTag();
						tag.k = val.value;
						tags.Add(tag);
					}

					break;

				case "v":
					way.tags.Add(AddV(tag, val.value));
					break;
			}
		}
	}
예제 #4
0
	MegaShapeOSMTag AddV(MegaShapeOSMTag tag, string v)
	{
		if ( tag != null )
		{
			for ( int i = 0; i < tag.vs.Count; i++ )
			{
				if ( tag.vs[i].k == v )
					return tag.vs[i];
			}
		}

		MegaShapeOSMTag vtag = new MegaShapeOSMTag();
		vtag.k = v;
		tag.vs.Add(vtag);
		return vtag;
	}
    void OnGUI()
    {
        importscale   = EditorGUILayout.FloatField("Import Scale", importscale);
        constantspeed = EditorGUILayout.Toggle("Constant Speed", constantspeed);
        //combine = EditorGUILayout.Toggle("Combine Splines", combine);
        smoothness = EditorGUILayout.Slider("Smoothness", smoothness, 0.0f, 2.0f);

        if (GUILayout.Button("Open OSM File"))
        {
            string filename = EditorUtility.OpenFilePanel("OSM File", lastosmpath, "OSM");

            if (filename == null || filename.Length < 1)
            {
                return;
            }

            lastosmpath = filename;

            StreamReader streamReader = new StreamReader(filename);
            text = streamReader.ReadToEnd();
            streamReader.Close();
            osm        = new MegaShapeOSM();
            importname = System.IO.Path.GetFileNameWithoutExtension(filename);
            osm.readOSMData(text);              //, importscale, constantspeed, importname, smoothness);	//scale);	//.splines[0]);
        }

        showtags = EditorGUILayout.Foldout(showtags, "Catagories");

        if (showtags)
        {
            pos = EditorGUILayout.BeginScrollView(pos, "box");

            for (int i = 0; i < MegaShapeOSM.tags.Count; i++)
            {
                MegaShapeOSMTag tag = MegaShapeOSM.tags[i];

                tag.show = EditorGUILayout.Foldout(tag.show, tag.k);
                if (tag.show)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField("", GUILayout.Width(8));
                    bool import = EditorGUILayout.Toggle("", tag.import, GUILayout.Width(14));
                    if (import != tag.import)
                    {
                        tag.import = import;
                        for (int j = 0; j < tag.vs.Count; j++)
                        {
                            MegaShapeOSMTag tagv = tag.vs[j];
                            tagv.import = import;
                        }
                    }
                    EditorGUILayout.LabelField(tag.k);
                    EditorGUILayout.EndHorizontal();

                    for (int j = 0; j < tag.vs.Count; j++)
                    {
                        MegaShapeOSMTag tagv = tag.vs[j];

                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField("", GUILayout.Width(24));
                        tagv.import = EditorGUILayout.Toggle("", tagv.import, GUILayout.Width(14));
                        EditorGUILayout.LabelField(tagv.k);
                        EditorGUILayout.EndHorizontal();
                    }
                }
            }

            EditorGUILayout.EndScrollView();
        }

        if (GUILayout.Button("Import"))
        {
            osm.importData(text, importscale, constantspeed, importname, smoothness, combine);                  //scale);	//.splines[0]);

            this.Close();
        }
    }