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); }
// Streaming Events public void OpenProject(Project project) { if (m_AuthClient == null) { Debug.LogError("Unable to open project without a Authentication Client."); return; } if (m_SelectedProject != null) { Debug.LogError("Only one project can be opened at a time."); return; } m_SelectedProject = project; m_Client = new ReflectClient(this, m_AuthClient.user, m_AuthClient.storage, m_SelectedProject); m_Client.manifestUpdated += OnManifestUpdated; m_IsManifestDirty = false; m_ReflectPipeline.InitializeAndRefreshPipeline(m_Client); // TODO : SaveProjectData(project) saves "project.data" for the offline project. // Maybe we need to move/remove this code depends on the design. // "project.data" file is using to get "Offline Project List" and "Enable Delete Button" in the project option dialog now var storage = new PlayerStorage(ProjectServer.ProjectDataPath, true, false); storage.SaveProjectData(project); }