Files
StudyCase/Assets/ThirdParty/BOXOPHOBIC/Utils/Editor/StyledMaterial/StyledTextureSingleLineDrawer.cs
2025-11-26 21:34:22 +08:00

82 lines
2.3 KiB
C#

// Cristian Pop - https://boxophobic.com/
using UnityEngine;
using UnityEditor;
namespace Boxophobic.StyledGUI
{
public class StyledTextureSingleLineDrawer : MaterialPropertyDrawer
{
public float top;
public float down;
public string tooltip;
int previewChannel = 0;
Material previewMaterial;
bool showAdvancedSettings = false;
public StyledTextureSingleLineDrawer()
{
this.top = 0;
this.down = 0;
this.tooltip = "";
}
public StyledTextureSingleLineDrawer(string tooltip)
{
this.top = 0;
this.down = 0;
this.tooltip = tooltip;
}
public StyledTextureSingleLineDrawer(float top, float down)
{
this.top = top;
this.down = down;
this.tooltip = "";
}
public StyledTextureSingleLineDrawer(string tooltip, float top, float down)
{
this.top = top;
this.down = down;
this.tooltip = tooltip;
}
public override void OnGUI(Rect position, MaterialProperty prop, string label, MaterialEditor materialEditor)
{
GUILayout.Space(top);
materialEditor.TexturePropertySingleLine(new GUIContent(prop.displayName, tooltip), prop);
if (prop.textureValue != null && prop.textureValue.dimension == UnityEngine.Rendering.TextureDimension.Tex2D)
{
var lastRect = GUILayoutUtility.GetLastRect();
if (GUI.Button(lastRect, "", GUIStyle.none))
{
showAdvancedSettings = !showAdvancedSettings;
}
if (showAdvancedSettings)
{
if (previewMaterial == null)
{
previewMaterial = new Material(Shader.Find("Hidden/BOXOPHOBIC/Helpers/Channel Preview"));
}
previewChannel = StyledGUI.DrawTexturePreview(prop.textureValue, previewMaterial, previewChannel);
}
}
GUILayout.Space(down);
}
public override float GetPropertyHeight(MaterialProperty prop, string label, MaterialEditor editor)
{
return -2;
}
}
}