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"); }
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(); }