- // Copyright (c) Microsoft Corporation. All rights reserved.
- // Licensed under the MIT License. See LICENSE in the project root for license information.
-
- using System;
- using System.Globalization;
- using UnityEditor;
- using UnityEngine;
-
- namespace HoloToolkit.Unity
- {
- /// <summary>
- /// Extensions for the UnityEditor.EditorGUILayout class.
- /// </summary>
- public static class EditorGUILayoutExtensions
- {
- public static bool Button(string text, params GUILayoutOption[] options)
- {
- return Button(text, GUI.skin.button, options);
- }
-
- public static bool Button(string text, GUIStyle style, params GUILayoutOption[] options)
- {
- EditorGUILayout.BeginHorizontal();
- GUILayout.Space(EditorGUIExtensions.Indent);
- bool pressed = GUILayout.Button(text, style, options);
- EditorGUILayout.EndHorizontal();
- return pressed;
- }
-
- public static void Label(string text, params GUILayoutOption[] options)
- {
- Label(text, EditorStyles.label, options);
- }
-
- public static void Label(string text, GUIStyle style, params GUILayoutOption[] options)
- {
- EditorGUILayout.BeginHorizontal();
- GUILayout.Space(EditorGUIExtensions.Indent);
- GUILayout.Label(text, style, options);
- EditorGUILayout.EndHorizontal();
- }
-
- public static T ObjectField<T>(GUIContent guiContent, T value, bool allowSceneObjects = false, GUILayoutOption[] guiLayoutOptions = null)
- {
- object objValue = value;
-
- if (objValue == null)
- {
- // We want to return null so we can display our blank field.
- return (T)objValue;
- }
-
- Type valueType = objValue.GetType();
- if (valueType == typeof(Material))
- {
- objValue = EditorGUILayout.ObjectField(guiContent, (Material)objValue, typeof(Material), allowSceneObjects, guiLayoutOptions);
- }
- else if (valueType == typeof(SceneAsset))
- {
- objValue = EditorGUILayout.ObjectField(guiContent, (SceneAsset)objValue, typeof(SceneAsset), allowSceneObjects, guiLayoutOptions);
- }
- else if (objValue is UnityEngine.Object)
- {
- objValue = EditorGUILayout.ObjectField(guiContent, (UnityEngine.Object)objValue, valueType, allowSceneObjects, guiLayoutOptions);
- }
- else
- {
- throw new ArgumentException(
- string.Format(
- CultureInfo.InvariantCulture,
- "Unimplemented value type: {0}.",
- valueType),
- "value");
- }
-
- return (T)objValue;
- }
- }
- }