internal static void InitializeIfNeeded() { if (sIsInitialized) { return; } sIsInitialized = true; PlasticAPI = new PlasticAPI(); PlasticWebRestApi = new PlasticWebRestApi(); ConfigureLogging(); GuiMessage.Initialize(new UnityPlasticGuiMessage()); RegisterExceptionHandlers(); InitLocalization(); ThreadWaiter.Initialize(new UnityThreadWaiterBuilder()); ServicePointConfigurator.ConfigureServicePoint(); CertificateUi.RegisterHandler(new ChannelCertificateUiImpl()); SetupFsWatcher(); EditionManager.Get().DisableCapability( EnumEditionCapabilities.Extensions); ClientHandlers.Register(); PlasticGuiConfig.SetConfigFile( PlasticGuiConfig.UNITY_GUI_CONFIG_FILE); sEventSenderScheduler = EventTracking.Configure( PlasticApp.PlasticWebRestApi, AssetsPath.IsRunningAsUPMPackage() ? ApplicationIdentifier.UnityPackage : ApplicationIdentifier.UnityAssetStorePlugin, IdentifyEventPlatform.Get()); if (sEventSenderScheduler != null) { sPingEventLoop = new PingEventLoop(); sPingEventLoop.Start(); sPingEventLoop.SetUnityVersion(Application.unityVersion); CollabPlugin.GetVersion(pluginVersion => sPingEventLoop.SetPluginVersion(pluginVersion)); } PlasticMethodExceptionHandling.InitializeAskCredentialsUi( new CredentialsUiImpl()); ClientEncryptionServiceProvider.SetEncryptionPasswordProvider( new MissingEncryptionPasswordPromptHandler()); }
void OnEnable() { processor.AssetModificationProcessor.ForceCheckout = EditorPrefs.GetBool("forceCheckoutPlasticSCM"); wantsMouseMove = true; if (mException != null) { return; } minSize = new Vector2( UnityConstants.PLASTIC_WINDOW_MIN_SIZE_WIDTH, UnityConstants.PLASTIC_WINDOW_MIN_SIZE_HEIGHT); SetupWindowTitle(); GuiMessage.Initialize(new UnityPlasticGuiMessage(this)); PlasticApp.InitializeIfNeeded(); RegisterApplicationFocusHandlers(this); PlasticMethodExceptionHandling.InitializeAskCredentialsUi( new CredentialsUiImpl(this)); ClientEncryptionServiceProvider.SetEncryptionPasswordProvider( new MissingEncryptionPasswordPromptHandler(this)); if (mPlasticAPI == null) { mPlasticAPI = new PlasticAPI(); } mPlasticWebRestApi = new PlasticWebRestApi(); mEventSenderScheduler = EventTracking.Configure( mPlasticWebRestApi, AssetsPath.IsRunningAsUPMPackage() ? ApplicationIdentifier.UnityPackage : ApplicationIdentifier.UnityAssetStorePlugin, IdentifyEventPlatform.Get()); if (mEventSenderScheduler != null) { mPingEventLoop = new PingEventLoop(); mPingEventLoop.Start(); mPingEventLoop.SetUnityVersion(Application.unityVersion); CollabPlugin.GetVersion(pluginVersion => mPingEventLoop.SetPluginVersion(pluginVersion)); } InitializePlastic(); }
void OnEnable() { wantsMouseMove = true; if (mException != null) { return; } SetupWindowTitle(false); GuiMessage.Initialize(new UnityPlasticGuiMessage(this)); PlasticApp.InitializeIfNeeded(); RegisterApplicationFocusHandlers(this); PlasticMethodExceptionHandling.InitializeAskCredentialsUi( new CredentialsUiImpl(this)); ClientEncryptionServiceProvider.SetEncryptionPasswordProvider( new MissingEncryptionPasswordPromptHandler(this)); mPlasticAPI = new PlasticAPI(); mPlasticWebRestApi = new PlasticWebRestApi(); mEventSenderScheduler = EventTracking.Configure( mPlasticWebRestApi, ApplicationIdentifier.UnityPackage, IdentifyEventPlatform.Get()); if (mEventSenderScheduler != null) { mPingEventLoop = new PingEventLoop(); mPingEventLoop.Start(); mPingEventLoop.SetUnityVersion(Application.unityVersion); } InitializePlastic(); }
void DownloadRepository(object state) { DownloadRepositoryParameters parameters = (DownloadRepositoryParameters)state; try { IPlasticWebRestApi restApi = new PlasticWebRestApi(); string defaultCloudAlias = restApi.GetDefaultCloudAlias(); RepositorySpec repSpec = BuildRepSpec( parameters.CloudRepository, parameters.CloudOrganization, defaultCloudAlias); // we just download a cloud project, // so let's assume we're going to use Cloud Edition SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded(); if (!ClientConfig.IsConfigured()) { AutoConfigClientConf.FromUnityAccessToken( parameters.AccessToken, repSpec, parameters.ProjectPath); } if (WorkspaceExists(parameters.ProjectPath)) { // each domain reload, the package is reloaded. // way need to check if we already downloaded it return; } mDisplayProgress = true; WorkspaceInfo wkInfo = CreateWorkspace( repSpec, parameters.ProjectPath); mLog.DebugFormat("Created workspace {0} on {1}", wkInfo.Name, wkInfo.ClientPath); AutoLogin autoLogin = new AutoLogin(); autoLogin.ExchangeTokens(parameters.AccessToken); CloudEditionWelcomeWindow.JoinOrganization(parameters.CloudOrganization, AutoLogin.sAccessToken, AutoLogin.sUserName); ClientConfigData clientConfigData = ClientConfig.Get().GetClientConfigData(); clientConfigData.WorkspaceServer = parameters.CloudOrganization; ClientConfig.Get().Save(clientConfigData); Plastic.API.Update( wkInfo.ClientPath, UpdateFlags.None, null, mUpdateNotifier); } catch (Exception ex) { LogException(ex); UnityEngine.Debug.LogErrorFormat( PlasticLocalization.GetString(PlasticLocalization.Name.ErrorDownloadingCloudProject), ex.Message); mOperationFailed = true; } finally { mOperationFinished = true; } }
void DownloadRepository(object state) { DownloadRepositoryParameters parameters = (DownloadRepositoryParameters)state; try { if (FindWorkspace.HasWorkspace(parameters.ProjectPath)) { // each domain reload, the package is reloaded. // way need to check if we already downloaded it return; } mDisplayProgress = true; IPlasticWebRestApi restApi = new PlasticWebRestApi(); string defaultCloudAlias = restApi.GetDefaultCloudAlias(); RepositorySpec repSpec = BuildRepSpec( parameters.CloudRepository, parameters.CloudOrganization, defaultCloudAlias); // we just download a cloud project, // so let's assume we're going to use Cloud Edition SetupUnityEditionToken.CreateCloudEditionTokenIfNeeded(); if (!ClientConfig.IsConfigured()) { AutoConfigClientConf.FromUnityAccessToken( parameters.AccessToken, repSpec.Server, parameters.ProjectPath); } TokenExchangeResponse tokenExchangeResponse = WebRestApiClient. PlasticScm.TokenExchange(parameters.AccessToken); if (tokenExchangeResponse.Error != null) { mOperationFailed = true; UnityEngine.Debug.LogErrorFormat( PlasticLocalization.GetString(PlasticLocalization.Name.ErrorDownloadingCloudProject), string.Format("Unable to get TokenExchangeResponse: {0} [code {1}]", tokenExchangeResponse.Error.Message, tokenExchangeResponse.Error.ErrorCode)); return; } CloudEditionWelcomeWindow.JoinCloudServer( repSpec.Server, tokenExchangeResponse.User, tokenExchangeResponse.AccessToken); ClientConfigData clientConfigData = ClientConfig.Get().GetClientConfigData(); clientConfigData.WorkspaceServer = repSpec.Server; ClientConfig.Get().Save(clientConfigData); WorkspaceInfo wkInfo = CreateWorkspace( repSpec, parameters.ProjectPath); mLog.DebugFormat("Created workspace {0} on {1}", wkInfo.Name, wkInfo.ClientPath); PlasticGui.Plastic.API.Update( wkInfo.ClientPath, UpdateFlags.None, null, mUpdateNotifier); } catch (Exception ex) { LogException(ex); UnityEngine.Debug.LogErrorFormat( PlasticLocalization.GetString(PlasticLocalization.Name.ErrorDownloadingCloudProject), ex.Message); mOperationFailed = true; } finally { mOperationFinished = true; } }
void DownloadRepository(object state) { DownloadRepositoryParameters parameters = (DownloadRepositoryParameters)state; try { if (FindWorkspace.HasWorkspace(parameters.ProjectPath)) { // each domain reload, the package is reloaded. // way need to check if we already downloaded it return; } mDisplayProgress = true; IPlasticWebRestApi restApi = new PlasticWebRestApi(); string defaultCloudAlias = restApi.GetDefaultCloudAlias(); RepositorySpec repSpec = BuildRepSpec( parameters.CloudRepository, parameters.CloudOrganization, defaultCloudAlias); TokenExchangeResponse tokenExchangeResponse = AutoConfig.PlasticCredentials( parameters.AccessToken, repSpec.Server, parameters.ProjectPath); if (tokenExchangeResponse.Error != null) { mOperationFailed = true; UnityEngine.Debug.LogErrorFormat( PlasticLocalization.GetString(PlasticLocalization.Name.ErrorDownloadingCloudProject), string.Format("Unable to get TokenExchangeResponse: {0} [code {1}]", tokenExchangeResponse.Error.Message, tokenExchangeResponse.Error.ErrorCode)); return; } WorkspaceInfo wkInfo = CreateWorkspace( repSpec, parameters.ProjectPath); mLog.DebugFormat("Created workspace {0} on {1}", wkInfo.Name, wkInfo.ClientPath); PlasticGui.Plastic.API.Update( wkInfo.ClientPath, UpdateFlags.None, null, mUpdateNotifier); } catch (Exception ex) { LogException(ex); UnityEngine.Debug.LogErrorFormat( PlasticLocalization.GetString(PlasticLocalization.Name.ErrorDownloadingCloudProject), ex.Message); mOperationFailed = true; } finally { mOperationFinished = true; } }