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);
        }
예제 #2
0
        // 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);
        }