#if UNITY_EDITOR using UnityEngine; using System.Collections; using UnityEditor; using Oculus.Avatar; [CustomEditor(typeof(OvrAvatarSettings))] [InitializeOnLoadAttribute] public class OvrAvatarSettingsEditor : Editor { GUIContent appIDLabel = new GUIContent("Oculus Rift App Id [?]", "This AppID will be used for OvrAvatar registration."); GUIContent mobileAppIDLabel = new GUIContent("Oculus Go/Quest or Gear VR [?]", "This AppID will be used when building to the Android target"); [UnityEditor.MenuItem("Oculus/Avatars/Edit Settings")] public static void Edit() { var settings = OvrAvatarSettings.Instance; UnityEditor.Selection.activeObject = settings; CAPI.SendEvent("edit_settings"); } static OvrAvatarSettingsEditor() { #if UNITY_2017_2_OR_NEWER EditorApplication.playModeStateChanged += HandlePlayModeState; #else EditorApplication.playmodeStateChanged += () => { if (EditorApplication.isPlaying) { CAPI.SendEvent("load", CAPI.AvatarSDKVersion.ToString()); } }; #endif } #if UNITY_2017_2_OR_NEWER private static void HandlePlayModeState(PlayModeStateChange state) { if (state == PlayModeStateChange.EnteredPlayMode) { CAPI.SendEvent("load", CAPI.AvatarSDKVersion.ToString()); } } #endif private static string MakeTextBox(GUIContent label, string variable) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(label); GUI.changed = false; var result = EditorGUILayout.TextField(variable); if (GUI.changed) { EditorUtility.SetDirty(OvrAvatarSettings.Instance); GUI.changed = false; } EditorGUILayout.EndHorizontal(); return result; } public override void OnInspectorGUI() { EditorGUILayout.BeginVertical(); OvrAvatarSettings.AppID = OvrAvatarSettingsEditor.MakeTextBox(appIDLabel, OvrAvatarSettings.AppID); OvrAvatarSettings.MobileAppID = OvrAvatarSettingsEditor.MakeTextBox(mobileAppIDLabel, OvrAvatarSettings.MobileAppID); EditorGUILayout.EndVertical(); } } #endif