コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }