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;
                }
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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}.");
                }
            }
        }
Exemplo n.º 6
0
 private static async void ConnectToInspector(IRemoteRenderingService service)
 {
     if (service.PrimaryMachine != null)
     {
         await service.PrimaryMachine.Session.OpenWebInspector();
     }
 }
Exemplo n.º 7
0
    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);
        }
    }
Exemplo n.º 8
0
        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);
                }
            }
        }