mirror of
https://github.com/maxartz15/UnitySerializedReferenceUI.git
synced 2024-12-23 16:08:28 +01:00
eeaadfc569
Core now formed and contains all useful utility to create custom ui with restrictions. Many methods was extracted from different classes and moved to core. Undo is now supported(because unity's undo bug seems to be fixed). Example now moved into same level separate folder.
45 lines
2.0 KiB
C#
45 lines
2.0 KiB
C#
#if UNITY_EDITOR
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
public static class SerializeReferenceInspectorButton
|
|
{
|
|
public static readonly Color SerializedReferenceMenuBackgroundColor = new Color(0.1f, 0.55f, 0.9f, 1f);
|
|
|
|
/// Must be drawn before DefaultProperty in order to receive input
|
|
public static void DrawSelectionButtonForManagedReference(this SerializedProperty property, Rect position, IEnumerable<Func<Type, bool>> filters = null) =>
|
|
property.DrawSelectionButtonForManagedReference(position, SerializedReferenceMenuBackgroundColor, filters);
|
|
|
|
/// Must be drawn before DefaultProperty in order to receive input
|
|
public static void DrawSelectionButtonForManagedReference(this SerializedProperty property,
|
|
Rect position, Color color, IEnumerable<Func<Type, bool>> filters = null)
|
|
{
|
|
|
|
var backgroundColor = color;
|
|
|
|
var buttonPosition = position;
|
|
buttonPosition.x += EditorGUIUtility.labelWidth + 1 * EditorGUIUtility.standardVerticalSpacing;
|
|
buttonPosition.width = position.width - EditorGUIUtility.labelWidth - 1 * EditorGUIUtility.standardVerticalSpacing;
|
|
buttonPosition.height = EditorGUIUtility.singleLineHeight;
|
|
|
|
var storedIndent = EditorGUI.indentLevel;
|
|
EditorGUI.indentLevel = 0;
|
|
var storedColor = GUI.backgroundColor;
|
|
GUI.backgroundColor = backgroundColor;
|
|
|
|
|
|
var names = ManagedReferenceUtility.GetSplitNamesFromTypename(property.managedReferenceFullTypename);
|
|
var className = string.IsNullOrEmpty(names.ClassName) ? "Null (Assign)" : names.ClassName;
|
|
var assemblyName = names.AssemblyName;
|
|
if (GUI.Button(buttonPosition, new GUIContent(className, className + " ( "+ assemblyName +" )" )))
|
|
property.ShowContextMenuForManagedReference(filters);
|
|
|
|
GUI.backgroundColor = storedColor;
|
|
EditorGUI.indentLevel = storedIndent;
|
|
}
|
|
}
|
|
|
|
#endif |