44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace NiloToon.NiloToonURP
|
|
{
|
|
#if UNITY_EDITOR
|
|
[CustomPropertyDrawer(typeof(HelpBoxAttribute))]
|
|
public class HelpBoxDrawer : DecoratorDrawer
|
|
{
|
|
private float cachedCurrentViewWidth = -1;
|
|
|
|
public override void OnGUI(Rect position)
|
|
{
|
|
// Cache the current view width when OnGUI is called
|
|
cachedCurrentViewWidth = EditorGUIUtility.currentViewWidth;
|
|
|
|
HelpBoxAttribute helpBoxAttr = attribute as HelpBoxAttribute;
|
|
if (helpBoxAttr != null)
|
|
{
|
|
position.height = GetHelpBoxHeight(helpBoxAttr.Text, position.width);
|
|
EditorGUI.HelpBox(position, helpBoxAttr.Text, helpBoxAttr.Type);
|
|
}
|
|
}
|
|
|
|
public override float GetHeight()
|
|
{
|
|
HelpBoxAttribute helpBoxAttr = attribute as HelpBoxAttribute;
|
|
if (helpBoxAttr != null)
|
|
{
|
|
// Use the cached current view width instead of accessing it directly
|
|
float width = cachedCurrentViewWidth;
|
|
return GetHelpBoxHeight(helpBoxAttr.Text, width) + 5; // Extra padding
|
|
}
|
|
return base.GetHeight();
|
|
}
|
|
|
|
private static float GetHelpBoxHeight(string text, float width)
|
|
{
|
|
GUIStyle style = "helpbox";
|
|
return style.CalcHeight(new GUIContent(text), width);
|
|
}
|
|
}
|
|
#endif
|
|
} |