private void WriteSongsToPlaylist(int playlistIndex) { List <Song> newSongList = new List <Song>(); foreach (Song song in Songs) { newSongList.Add(song); } Playlists[playlistIndex] = new Playlist(Playlists[playlistIndex].Name, newSongList); }
private void SavePlayerPlaylistsToLibrary() { VRCUrl[] urls = player.Urls; string[] titles = player.Titles; string[] artists = player.Artists; int[] playlistIndices = player.PlaylistIndices; string[] playlistNames = player.PlaylistNames; int songCount = Math.Min(urls.Length, Math.Min(titles.Length, artists.Length)); if (songCount == 0) { Debug.Log($"{LogPrefix} There are no songs in the player!"); return; } List <Playlist> playlists = new List <Playlist>(); for (int i = 0; i < playlistIndices.Length; i++) { Playlist playlist = new Playlist(playlistNames[i]); int playlistStartIndex = (playlistIndices.Length == 0) ? 0 : playlistIndices[i]; int playlistEndIndex = (playlistIndices.Length > i + 1) ? playlistIndices[i + 1] : urls.Length; List <Song> songs = new List <Song>(); for (int j = playlistStartIndex; j < playlistEndIndex; j++) { songs.Add(new Song(titles[j], artists[j], urls[j].Get())); } playlist.Songs = songs; playlists.Add(playlist); } string filePath = EditorUtility.SaveFilePanelInProject("Save player's playlists to file", "PlayerLibrary", "asset", "Save playlists to file", LibraryPath); CreateNewLibraryFile(filePath, playlists); }
private void DrawFieldPlaylistList() { GUILayout.BeginVertical(new GUILayoutOption[] { GUILayout.Width(Screen.width / 2f) }); EditorGUI.BeginDisabledGroup(creatingNewPlaylist || renamingPlaylist); GUILayout.BeginHorizontal(EditorStyles.helpBox); scrollPosPlaylists = EditorGUILayout.BeginScrollView(scrollPosPlaylists); so.Update(); playlistList.DoLayoutList(); so.ApplyModifiedProperties(); GUILayout.EndHorizontal(); EditorGUILayout.EndScrollView(); EditorGUI.EndDisabledGroup(); #region Playlist Actions GUILayout.BeginHorizontal(EditorStyles.helpBox); if (!creatingNewPlaylist && !renamingPlaylist) { GUILayout.Label("Playlist Actions:", EditorStyles.centeredGreyMiniLabel, GUILayout.Width(90)); GUILayout.FlexibleSpace(); if (GUILayout.Button("Copy", GUILayout.Width(45))) { tempPlaylist = new Playlist(Playlists[playlistList.index].Name); foreach (Song song in Songs) { tempPlaylist.Songs.Add(song); } } EditorGUI.BeginDisabledGroup(tempPlaylist.Equals(new Playlist())); if (GUILayout.Button("Paste", GUILayout.Width(45))) { Playlists.Add(tempPlaylist); pendingChanges = true; } EditorGUI.EndDisabledGroup(); if (GUILayout.Button("Rename", GUILayout.Width(65))) { newPlaylistName = Playlists[playlistList.index].Name; renamingPlaylist = true; } if (GUILayout.Button("Add", GUILayout.Width(40))) { newPlaylistName = "New Playlist"; creatingNewPlaylist = true; } EditorGUI.BeginDisabledGroup(Playlists.Count <= 1); if (GUILayout.Button(new GUIContent("X", "Remove"), GUILayout.Width(20))) { RemovePlaylist(); pendingChanges = true; } EditorGUI.EndDisabledGroup(); } else { GUILayout.Label("Playlist Name:"); newPlaylistName = EditorGUILayout.TextField(newPlaylistName); if (GUILayout.Button(renamingPlaylist ? "Rename" : "Create", GUILayout.Width(70))) { if (renamingPlaylist) { WriteSongsToPlaylist(playlistList.index); Playlists[playlistList.index] = new Playlist(newPlaylistName, Playlists[playlistList.index].Songs); } else { Playlists.Add(new Playlist(newPlaylistName)); } pendingChanges = true; ResetPlaylistNameField(); } else if (GUILayout.Button("Cancel", GUILayout.Width(70))) { ResetPlaylistNameField(); } } GUILayout.EndHorizontal(); #endregion GUILayout.EndVertical(); }