OvrAvatarSettingsEditor.cs 2.21 KB
#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