private void DrawPlayingSettings(IRemoteRenderingService service) { if (!Application.isPlaying) { return; } BaseRemoteRenderingServiceProfile loadedProfile = service.LoadedProfile; if (sessionOverrideLabel == null) { sessionOverrideLabel = new GUIContent( "Session Id", "A session guid to connect to. If specified, the app will attempt to connect to this session. If a override guid is suppied, the corresponding domain must also be set."); } if (preferredDomainLabel == null) { preferredDomainLabel = new GUIContent( "Preferred Domain", "The preferred to domain to connect to; for example, westus2.mixedreality.azure.com."); } loadedProfile.PreferredDomain = EditorGUILayout.TextField(preferredDomainLabel, loadedProfile.PreferredDomain); loadedProfile.SessionOverride = EditorGUILayout.TextField(sessionOverrideLabel, loadedProfile.SessionOverride); }
private static async void RefreshSessionStatus(IRemoteRenderingService service) { if (service.PrimaryMachine != null) { await service.PrimaryMachine.Session.UpdateProperties(); } }
/// <summary> /// Re-apply settings to ensure the buttons act on the lastest settings. /// </summary> private static async Task ApplySettings(IRemoteRenderingService service) { // Re-apply settings that have been entered during playmode. string lastSessionOverride = null; string lastPreferredDomain = null; if (Application.isPlaying) { lastSessionOverride = service.LoadedProfile.SessionOverride; lastPreferredDomain = service.LoadedProfile.PreferredDomain; } try { await service.ReloadProfile(); } catch (Exception ex) { Debug.LogFormat(LogType.Warning, LogOption.NoStacktrace, null, "{0}", $"Failed to reload profile settings. Reason: {ex.Message}"); } if (Application.isPlaying) { if (!string.IsNullOrEmpty(lastSessionOverride)) { service.LoadedProfile.SessionOverride = lastSessionOverride; } if (!string.IsNullOrEmpty(lastPreferredDomain)) { service.LoadedProfile.PreferredDomain = lastPreferredDomain; } } }
private static async Task <IRemoteRenderingMachine> GetOrCreateMachine(IRemoteRenderingService service) { IRemoteRenderingMachine machine = service.PrimaryMachine; RemoteRenderingServiceProfile loadedProfile = service.LoadedProfile; if (loadedProfile != null && !string.IsNullOrEmpty(loadedProfile.SessionOverride)) { Guid sessionGuid = Guid.Empty; if (Guid.TryParse(loadedProfile.SessionOverride, out sessionGuid)) { if (machine == null || machine.Session.Id != loadedProfile.SessionOverride) { machine = await service.Open(loadedProfile.SessionOverride); } } } else if (machine == null) { machine = await service.Create(); } else if (loadedProfile.PreferredDomain != machine.Session.Domain) { machine = await service.Create(); } return(machine); }
private static async void Connect(IRemoteRenderingService service) { if (!Application.isPlaying) { return; } await ApplySettings(service); IRemoteRenderingMachine machine = null; try { machine = await GetOrCreateMachine(service); } catch (Exception ex) { Debug.LogFormat(LogType.Error, LogOption.NoStacktrace, null, $"Failed to obtain machine for connection. Reason: {ex.Message}."); } if (machine != null) { try { await machine.Session.Connection.Connect(); } catch (Exception ex) { Debug.LogFormat(LogType.Error, LogOption.NoStacktrace, null, $"Failed to connect to machine. Reason: {ex.Message}."); } } }
private static async void ConnectToInspector(IRemoteRenderingService service) { if (service.PrimaryMachine != null) { await service.PrimaryMachine.Session.OpenWebInspector(); } }
private void Start() { _remoteRenderingService = AppServices.RemoteRendering; if (_remoteRenderingService != null && UploadModelButton != null) { // Button listener UploadModelButton.OnClick.AddListener(SelectModel); // Remote rendering status _remoteRenderingService.StatusChanged += RemoteRendering_StatusChanged; RemoteRendering_StatusChanged(_remoteRenderingService.Status); } }
private void DrawConnectionControls(RemoteRenderingServiceProfile profile, IRemoteRenderingService service) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Connect")) { Connect(service); } if (GUILayout.Button("Disconnect")) { Disconnect(service); } GUILayout.EndHorizontal(); }
public override void DrawInspectorGUI(object target) { IRemoteRenderingService service = target as IRemoteRenderingService; BaseRemoteRenderingServiceProfile profile = service.ConfigurationProfile as BaseRemoteRenderingServiceProfile; if (boldText == null) { boldText = new GUIStyle(GUI.skin.label); boldText.fontStyle = FontStyle.Bold; } GUILayout.Space(10.0f); GUILayout.Label("Current Session Info", boldText); EditorGUI.indentLevel++; if (service?.PrimaryMachine == null) { DrawNoMachine(); } else { DrawMachingInformation(service.PrimaryMachine); } EditorGUI.indentLevel--; if (service != null) { GUILayout.Space(10.0f); GUILayout.Label("Session Controls", boldText); DrawSessionControls(service); if (Application.isPlaying) { GUILayout.Space(10.0f); GUILayout.Label("Connection Controls", boldText); DrawConnectionControls(profile, service); GUILayout.Space(10.0f); GUILayout.Label("Temporary Overrides", boldText); DrawPlayingSettings(service); } } }