public static void CreateMyAsset()
    {
        RawOpenDataMap asset = ScriptableObject.CreateInstance <RawOpenDataMap>();

        AssetDatabase.CreateAsset(asset, "Assets/ScriptableObjects/Input/NewOpenDataMap.asset");
        AssetDatabase.SaveAssets();

        EditorUtility.FocusProjectWindow();

        Selection.activeObject = asset;
    }
    public static void ExtractRawOpenDataMap(RawOpenDataMap rawMap, string extractedFilename)
    {
        ExtractedOpenDataMap finishedMap = ScriptableObject.CreateInstance <ExtractedOpenDataMap>();
        int fileCount = 0;

        foreach (var entry in rawMap.dataEntries)
        {
            List <OpenDataObject> objectsFromCsv = CsvReader.GetEveryLineAsObjectFromCSV(entry.openDataFile);

            for (int i = 0; i < objectsFromCsv.Count; i++)
            {
                if (objectsFromCsv[i].Shape is PointShape)
                {
                    objectsFromCsv[i] = ApplyAllRules(objectsFromCsv[i]);
                }
                else if (objectsFromCsv[i].Shape is LinestringShape)
                {
                    objectsFromCsv[i] = ApplyAllRules(objectsFromCsv[i]);
                }
                else if (objectsFromCsv[i].Shape is PolygonShape)
                {
                    objectsFromCsv[i] = ApplyAllRules(objectsFromCsv[i]);
                }
                else if (objectsFromCsv[i].Shape is MultipolygonShape)
                {
                    MultipolygonShape multipolygon = (MultipolygonShape)objectsFromCsv[i].Shape;

                    for (int y = 0; y < multipolygon.polygonShapes.Count; y++)
                    {
                        for (int index = 0; index < multipolygon.polygonShapes[y].coordinates.Count; index++)
                        {
                            multipolygon.polygonShapes[y].coordinates[index] = ApplyCoordinatePreparationRules(multipolygon.polygonShapes[y].coordinates[index]);
                        }
                    }
                    objectsFromCsv[i].Shape = multipolygon;
                }

                SaveInDestinationObject(finishedMap, new ExtractedOpenDataEntry(entry.relatedPrefab, objectsFromCsv[i], entry.openDataFile.name));
            }
            Debug.Log("Files: " + fileCount++);
        }
        SaveFinishedDestinationFile(finishedMap, extractedFilename);
        Debug.Log("Finished Extraction");
    }
Пример #3
0
    void OnGUI()
    {
        GUILayout.Label("OGD Extraction", EditorStyles.boldLabel);

        extractFromFile   = EditorGUILayout.BeginToggleGroup("Extract data from source file?", extractFromFile);
        rawOGDMap         = EditorGUILayout.ObjectField("Source File: ", rawOGDMap, typeof(RawOpenDataMap), false) as RawOpenDataMap;
        extractedFilename = EditorGUILayout.TextField("Destination Filename:", extractedFilename);

        GUI.enabled = (rawOGDMap != null) && (extractedFilename.Length > 0) && extractFromFile;
        if (GUILayout.Button("Create"))
        {
            OpenDataExtractor.ExtractRawOpenDataMap(rawOGDMap, extractedFilename);
        }

        EditorGUILayout.EndToggleGroup();



        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.Space();



        GUILayout.Label("World Generation", EditorStyles.boldLabel);
        createGameObjectsFromFile = EditorGUILayout.BeginToggleGroup("Create world objects from extracted file?", createGameObjectsFromFile);
        extractedOGDMap           = EditorGUILayout.ObjectField("Source File: ", extractedOGDMap, typeof(ExtractedOpenDataMap), false) as ExtractedOpenDataMap;

        EditorGUILayout.Space();
        GUILayout.Label("If there are Linestring, Polygon or Multipolygon in the files,\nhow should the line between 2 points look like?", EditorStyles.boldLabel);
        lineColor    = EditorGUILayout.ColorField("Color: ", lineColor);
        lineMaterial = EditorGUILayout.ObjectField("Material: ", lineMaterial, typeof(Material), false) as Material;
        lineWidth    = EditorGUILayout.FloatField("Line width: ", lineWidth);

        GUI.enabled = createGameObjectsFromFile && extractedOGDMap;
        if (GUILayout.Button("Create"))
        {
            OGDWorldGenerator.GenerateContent(extractedOGDMap, lineColor, lineMaterial, lineWidth);
            //OGDWorldGenerator.TestCoordinatesFrom(extractedOGDMap);
        }

        EditorGUILayout.EndToggleGroup();
    }