private static void CreateProtocolAndAdvise(Lifetime lifetime, List <ProtocolInstance> list, string solutionName) { try { var dispatcher = MainThreadDispatcher.Instance; var riderProtocolController = new RiderProtocolController(dispatcher, lifetime); list.Add(new ProtocolInstance(riderProtocolController.Wire.Port, solutionName)); #if !NET35 var serializers = new Serializers(lifetime, null, null); #else var serializers = new Serializers(); #endif var identities = new Identities(IdKind.Server); MainThreadDispatcher.AssertThread(); var protocol = new Protocol("UnityEditorPlugin" + solutionName, serializers, identities, MainThreadDispatcher.Instance, riderProtocolController.Wire, lifetime); riderProtocolController.Wire.Connected.WhenTrue(lifetime, connectionLifetime => { ourLogger.Log(LoggingLevel.VERBOSE, "Create UnityModel and advise for new sessions..."); var model = new EditorPluginModel(connectionLifetime, protocol); AdviseUnityActions(model, connectionLifetime); AdviseEditorState(model); OnModelInitialization(new UnityModelAndLifetime(model, connectionLifetime)); AdviseRefresh(model); InitEditorLogPath(model); model.UnityProcessId.SetValue(Process.GetCurrentProcess().Id); model.UnityApplicationData.SetValue(new UnityApplicationData( EditorApplication.applicationPath, EditorApplication.applicationContentsPath, UnityUtils.UnityApplicationVersion)); model.ScriptingRuntime.SetValue(UnityUtils.ScriptingRuntime); if (UnityUtils.UnityVersion >= new Version(2018, 2)) { model.ScriptCompilationDuringPlay.Set(EditorPrefsWrapper.ScriptChangesDuringPlayOptions); } else { model.ScriptCompilationDuringPlay.Set((int)PluginSettings.AssemblyReloadSettings); } AdviseShowPreferences(model, connectionLifetime, ourLogger); AdviseGenerateUISchema(model); AdviseExitUnity(model); GetBuildLocation(model); AdviseRunMethod(model); GetInitTime(model); ourLogger.Verbose("UnityModel initialized."); var pair = new ModelWithLifetime(model, connectionLifetime); connectionLifetime.OnTermination(() => { UnityModels.Remove(pair); }); UnityModels.Add(pair); }); } catch (Exception ex) { ourLogger.Error("Init Rider Plugin " + ex); } }
private static void CreateProtocolAndAdvise(Lifetime lifetime, List <ProtocolInstance> list, string solutionFileName) { try { var dispatcher = MainThreadDispatcher.Instance; var riderProtocolController = new RiderProtocolController(dispatcher, lifetime); list.Add(new ProtocolInstance(riderProtocolController.Wire.Port, solutionFileName)); var serializers = new Serializers(); var identities = new Identities(IdKind.Server); MainThreadDispatcher.AssertThread(); riderProtocolController.Wire.Connected.WhenTrue(lifetime, connectionLifetime => { var protocol = new Protocol("UnityEditorPlugin", serializers, identities, MainThreadDispatcher.Instance, riderProtocolController.Wire); ourLogger.Log(LoggingLevel.VERBOSE, "Create UnityModel and advise for new sessions..."); var model = new EditorPluginModel(connectionLifetime, protocol); AdviseUnityActions(model, connectionLifetime); AdviseEditorState(model); OnModelInitialization(new UnityModelAndLifetime(model, connectionLifetime)); AdviseRefresh(model); InitEditorLogPath(model); AdviseScriptCompilationDuringPlay(model, connectionLifetime); model.UnityProcessId.Set(Process.GetCurrentProcess().Id); model.FullPluginPath.AdviseNotNull(connectionLifetime, AdditionalPluginsInstaller.UpdateSelf); model.ApplicationPath.SetValue(EditorApplication.applicationPath); model.ApplicationContentsPath.SetValue(EditorApplication.applicationContentsPath); model.ApplicationVersion.SetValue(Application.unityVersion); model.ScriptingRuntime.SetValue(UnityUtils.ScriptingRuntime); if (UnityUtils.UnityVersion >= new Version(2018, 2) && EditorPrefsWrapper.ScriptChangesDuringPlayOptions == 0) { model.NotifyIsRecompileAndContinuePlaying.Fire("General"); } else if (UnityUtils.UnityVersion < new Version(2018, 2) && PluginSettings.AssemblyReloadSettings == AssemblyReloadSettings.RecompileAndContinuePlaying) { model.NotifyIsRecompileAndContinuePlaying.Fire("Rider"); } ourLogger.Verbose("UnityModel initialized."); var pair = new ModelWithLifetime(model, connectionLifetime); connectionLifetime.AddAction(() => { UnityModels.Remove(pair); }); UnityModels.Add(pair); new UnityEventLogSender(ourLogEventCollector); }); } catch (Exception ex) { ourLogger.Error("Init Rider Plugin " + ex); } }
private static void CreateProtocolAndAdvise(Lifetime lifetime, List <ProtocolInstance> list, string solutionFileName) { try { var riderProtocolController = new RiderProtocolController(MainThreadDispatcher.Instance, lifetime); list.Add(new ProtocolInstance(riderProtocolController.Wire.Port, solutionFileName)); var serializers = new Serializers(); var identities = new Identities(IdKind.Server); MainThreadDispatcher.AssertThread(); riderProtocolController.Wire.Connected.WhenTrue(lifetime, connectionLifetime => { var protocol = new Protocol("UnityEditorPlugin", serializers, identities, MainThreadDispatcher.Instance, riderProtocolController.Wire); ourLogger.Log(LoggingLevel.VERBOSE, "Create UnityModel and advise for new sessions..."); var model = new EditorPluginModel(connectionLifetime, protocol); AdviseUnityActions(model, connectionLifetime); AdviseEditorState(model); OnModelInitialization(new UnityModelAndLifetime(model, connectionLifetime)); AdviseRefresh(model); InitEditorLogPath(model); model.FullPluginPath.AdviseNotNull(connectionLifetime, AdditionalPluginsInstaller.UpdateSelf); model.ApplicationPath.SetValue(EditorApplication.applicationPath); model.ApplicationContentsPath.SetValue(EditorApplication.applicationContentsPath); model.ApplicationVersion.SetValue(Application.unityVersion); model.ScriptingRuntime.SetValue(UnityUtils.ScriptingRuntime); ourLogger.Verbose("UnityModel initialized."); var pair = new ModelWithLifetime(model, connectionLifetime); connectionLifetime.AddAction(() => { UnityModels.Remove(pair); }); UnityModels.Add(pair); new UnityEventLogSender(ourLogEventCollector); }); } catch (Exception ex) { ourLogger.Error("Init Rider Plugin " + ex); } }
private static int CreateProtocolForSolution(Lifetime lifetime, string solutionName, Action onDisconnected) { try { var dispatcher = MainThreadDispatcher.Instance; var currentWireAndProtocolLifetimeDef = lifetime.CreateNested(); var currentWireAndProtocolLifetime = currentWireAndProtocolLifetimeDef.Lifetime; var riderProtocolController = new RiderProtocolController(dispatcher, currentWireAndProtocolLifetime); #if !NET35 var serializers = new Serializers(lifetime, null, null); #else var serializers = new Serializers(); #endif var identities = new Identities(IdKind.Server); MainThreadDispatcher.AssertThread(); var protocol = new Protocol("UnityEditorPlugin" + solutionName, serializers, identities, MainThreadDispatcher.Instance, riderProtocolController.Wire, currentWireAndProtocolLifetime); riderProtocolController.Wire.Connected.WhenTrue(currentWireAndProtocolLifetime, connectionLifetime => { ourLogger.Log(LoggingLevel.VERBOSE, "Create UnityModel and advise for new sessions..."); var model = new BackendUnityModel(connectionLifetime, protocol); AdviseUnityActions(model, connectionLifetime); AdviseEditorState(model); OnModelInitialization(new UnityModelAndLifetime(model, connectionLifetime)); AdviseRefresh(model); var paths = GetLogPaths(); model.UnityApplicationData.SetValue(new UnityApplicationData( EditorApplication.applicationPath, EditorApplication.applicationContentsPath, UnityUtils.UnityApplicationVersion, paths[0], paths[1], Process.GetCurrentProcess().Id)); model.UnityApplicationSettings.ScriptCompilationDuringPlay.Set(UnityUtils.SafeScriptCompilationDuringPlay); model.UnityProjectSettings.ScriptingRuntime.SetValue(UnityUtils.ScriptingRuntime); AdviseShowPreferences(model, connectionLifetime, ourLogger); AdviseGenerateUISchema(model); AdviseExitUnity(model); GetBuildLocation(model); AdviseRunMethod(model); GetInitTime(model); ourLogger.Verbose("UnityModel initialized."); var pair = new ModelWithLifetime(model, connectionLifetime); connectionLifetime.OnTermination(() => { UnityModels.Remove(pair); }); UnityModels.Add(pair); connectionLifetime.OnTermination(() => { ourLogger.Verbose($"Connection lifetime is not alive for {solutionName}, destroying protocol"); onDisconnected(); }); }); return(riderProtocolController.Wire.Port); } catch (Exception ex) { ourLogger.Error("Init Rider Plugin " + ex); return(-1); } }