public void SetTempContainerToScriptable(LevelDataWall scriptable, LevelDataWallContainer container) { scriptable.Tiles = container.TileList.ToArray(); scriptable.Walls = container.WallList.ToArray(); scriptable.Size = container.Data1; scriptable.StartPositionX = container.Data2.Item1; scriptable.StartPositionY = container.Data2.Item2; EditorUtility.SetDirty(scriptable); }
void OnGUI() { EditorWindow window = this; prefabSettings = (PrefabSettingsWall)EditorGUILayout.ObjectField( "Prefab Settings Wall:", prefabSettings, typeof(PrefabSettingsWall), false); if (UseSingle) { GUILayout.Label("Convert CSV level files to Target type"); CsvFile = (TextAsset)EditorGUILayout.ObjectField( "SourceCSV: ", CsvFile, typeof(TextAsset), false); LevelData = (LevelDataWall)EditorGUILayout.ObjectField( "Existing Target:", LevelData, typeof(LevelDataWall), false); CreateNewScriptableObject = EditorGUILayout.Toggle("CreateNewTarget:", CreateNewScriptableObject); ScriptableObjectName = EditorGUILayout.TextField("NewSOName", ScriptableObjectName); if (GUILayout.Button("CONVERT")) { LevelDataWallContainer container = ParseCsv(CsvFile); if (CreateNewScriptableObject) { LevelData = (LevelDataWall)ScriptableObject.CreateInstance(typeof(LevelDataWall)); AssetDatabase.CreateAsset(LevelData, $"{ParentFolderPath}/{ScriptableObjectName}.asset"); } SetTempContainerToScriptable(LevelData, container); EditorUtility.SetDirty(LevelData); this.Close(); } } else { GUILayout.Label("Convert list of CSV files to Target type "); ScriptableObjectBaseName = EditorGUILayout.TextField("TargetBaseName", ScriptableObjectBaseName); ScriptableObjectNameFirstNumber = EditorGUILayout.IntField("StartNumberingFrom...", ScriptableObjectNameFirstNumber); ScriptableObject target = this; SerializedObject so = new SerializedObject(target); SerializedProperty CsvFilesProperty = so.FindProperty("CsvFiles"); EditorGUILayout.PropertyField(CsvFilesProperty, true); so.ApplyModifiedProperties(); if (GUILayout.Button("CONVERT")) { int i = 0; foreach (var file in CsvFiles) { LevelDataWallContainer container = ParseCsv(file); LevelData = (LevelDataWall)ScriptableObject.CreateInstance(typeof(LevelDataWall)); AssetDatabase.CreateAsset(LevelData, $"{ParentFolderPath}/{ScriptableObjectBaseName}{ScriptableObjectNameFirstNumber + i}.asset"); SetTempContainerToScriptable(LevelData, container); i++; } this.Close(); } } }