/* * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * Licensed under the Oculus SDK License Agreement (the "License"); * you may not use the Oculus SDK except in compliance with the License, * which is provided at the time of installation or download, or which * otherwise accompanies this software in either electronic or hard copy form. * * You may obtain a copy of the License at * * https://developer.oculus.com/licenses/oculussdk/ * * Unless required by applicable law or agreed to in writing, the Oculus SDK * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using UnityEngine; using UnityEditor; using Meta.XR.Simulator.Editor.SyntheticEnvironments; namespace Meta.XR.Simulator.Editor { [InitializeOnLoad] internal static class Settings { private const string LastEnvironmentKey = XRSimConstants.PackageName + ".lastEnvironment_key"; internal static string LastEnvironment { get => EditorPrefs.GetString(LastEnvironmentKey, "LivingRoom"); set => EditorPrefs.SetString(LastEnvironmentKey, value); } private const string AutomaticServersKey = XRSimConstants.PackageName + ".automaticservers_key"; internal static bool AutomaticServers { get => EditorPrefs.GetBool(AutomaticServersKey, true); set => EditorPrefs.SetBool(AutomaticServersKey, value); } private const string DisplayServersKey = XRSimConstants.PackageName + ".displayservers_key"; internal static bool DisplayServers { get => EditorPrefs.GetBool(DisplayServersKey, false); set => EditorPrefs.SetBool(DisplayServersKey, value); } static Settings() { #if META_XR_SDK_CORE_SUPPORTS_TOOLBAR OVRUserSettingsProvider.Register("Simulator", OnSettingsGUI); #endif } private static void OnSettingsGUI() { // Enable Toggle EditorGUI.BeginChangeCheck(); var enable = EditorGUILayout.Toggle(new GUIContent("Enable", "Set Play mode to use Meta XR Simulator"), Enabler.Activated); if (EditorGUI.EndChangeCheck()) { if (enable) { #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed Utils.XRSimUtils.ActivateSimulator(false, Origin.Settings); #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed } else { Utils.XRSimUtils.DeactivateSimulator(false, Origin.Settings); } } { // Automatic Synthetic Environment Toggle EditorGUI.BeginChangeCheck(); var value = EditorGUILayout.Toggle( new GUIContent("Automatically Start/Stop Servers", "Whether or not the Synthetic Environment Servers and the Local Sharing Servers are started and stopped when entering and exiting Play Mode."), AutomaticServers); if (EditorGUI.EndChangeCheck()) { AutomaticServers = value; } } { // Display Synthetic Environment Window EditorGUI.BeginChangeCheck(); var value = EditorGUILayout.Toggle( new GUIContent("Display Servers", "Whether or not the Synthetic Environment Server and the Local Sharing Server are displayed or hidden."), DisplayServers); if (EditorGUI.EndChangeCheck()) { DisplayServers = value; } } { // Preferred Environment Dropdown Registry.RefreshNames(); var selectedRoom = Registry.GetByInternalName(LastEnvironment); var selectedIndex = selectedRoom?.Index ?? 0; EditorGUI.BeginChangeCheck(); var index = EditorGUILayout.Popup("Selected Environment", selectedIndex, Registry.Names); if (EditorGUI.EndChangeCheck()) { selectedRoom = Registry.GetByIndex(index); LastEnvironment = selectedRoom.InternalName; } } } } }