public static string GetProjectThumbnailSavePath(Project project) { var thumbnailFolder = new DirectoryInfo(string.Format("{0}/{1}", m_PlayerStorage.GetProjectFolder(project), k_ThumbnailFolderName)); if (!Directory.Exists(thumbnailFolder.FullName)) { Directory.CreateDirectory(thumbnailFolder.FullName); } var thumbnails = thumbnailFolder.GetFiles() .Where(file => file.Extension.Equals(".png")) .OrderByDescending(file => file.LastWriteTime) .Select(file => file.FullName) .ToArray(); if (thumbnails.Length >= k_ThumbnailHistoryAmount) { for (int i = k_ThumbnailHistoryAmount - 1; i < thumbnails.Length; i++) { File.Delete(thumbnails[i]); } Array.Resize(ref thumbnails, k_ThumbnailHistoryAmount); } return(string.Format("{0}/{1}.png", thumbnailFolder.FullName, Guid.NewGuid().ToString())); }
void OpenProject(Project project) { m_State = State.OpeningProject; // Prepare the folder for project data var projectFolder = m_Storage.GetProjectFolder(project); Directory.CreateDirectory(projectFolder); // Create the ISyncProvider (ReflectClient). m_ReflectClient = new ReflectClient(this, m_AuthClient.user, m_AuthClient.storage, project); // Create a ReflectPipeline component m_ReflectPipeline = gameObject.AddComponent <ReflectPipeline>(); // Create a basic PipelineAsset m_ReflectPipeline.pipelineAsset = CreateBasicPipelineAsset(); // Assign root transform to the InstanceConverterNode m_ReflectPipeline.TryGetNode <InstanceConverterNode>(out var instanceConverter); instanceConverter.SetRoot(root, m_ReflectPipeline); // Initialize and run the pipeline m_ReflectPipeline.InitializeAndRefreshPipeline(m_ReflectClient); }
Task DeleteProjectLocally(CancellationToken token, UnityProject project) { m_CurrentCount = 0; m_TotalCount = 0; var projectFolderPath = m_Storage.GetProjectFolder(project); if (!Directory.Exists(projectFolderPath)) { Debug.LogWarning($"Cannot delete locally stored project '{project.ProjectId}'"); return(Task.CompletedTask); } // Deleting each file individually is slow. Instead, get all leaf directories and delete them one after the other. var projectDirectories = Directory .EnumerateDirectories(projectFolderPath, "*.*", SearchOption.AllDirectories) .Where(f => !Directory.EnumerateDirectories(f, "*.*", SearchOption.TopDirectoryOnly).Any()).ToList(); m_TotalCount = projectDirectories.Count; for (int i = 0; i < projectDirectories.Count; ++i) { token.ThrowIfCancellationRequested(); Directory.Delete(projectDirectories[i], true); m_CurrentCount++; } Directory.Delete(projectFolderPath, true); return(Task.CompletedTask); }
async Task SaveManifestAsync(SyncManifest manifest) { var folder = m_Storage.GetProjectFolder(m_Project); var fullPath = Path.Combine(folder, manifest.SourceId + ".manifest"); // TODO. Improve how sourceId is saved await PlayerFile.SaveManifestAsync(manifest, fullPath); }
public string GetProjectFolder(Project project) { return(m_LocalStorage.GetProjectFolder(project)); }