82 lines
2.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|