92 lines
2.4 KiB
C#
92 lines
2.4 KiB
C#
// Cristian Pop - https://boxophobic.com/
|
|
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
using System;
|
|
|
|
namespace Boxophobic.StyledGUI
|
|
{
|
|
public class StyledInteractiveDrawer : MaterialPropertyDrawer
|
|
{
|
|
public string keyword;
|
|
public float value1 = -1f;
|
|
public float value2 = -1f;
|
|
public float value3 = -1f;
|
|
|
|
protected int type;
|
|
|
|
public StyledInteractiveDrawer(string k)
|
|
{
|
|
type = 0;
|
|
keyword = k;
|
|
}
|
|
|
|
public StyledInteractiveDrawer(string k, float v1)
|
|
{
|
|
type = 1;
|
|
keyword = k;
|
|
value1 = v1;
|
|
}
|
|
|
|
public StyledInteractiveDrawer(string k, float v1, float v2)
|
|
{
|
|
type = 1;
|
|
keyword = k;
|
|
value1 = v1;
|
|
value2 = v2;
|
|
}
|
|
|
|
public StyledInteractiveDrawer(string k, float v1, float v2, float v3)
|
|
{
|
|
type = 1;
|
|
keyword = k;
|
|
value1 = v1;
|
|
value2 = v2;
|
|
value3 = v3;
|
|
}
|
|
|
|
public override void OnGUI(Rect position, MaterialProperty prop, String label, MaterialEditor materialEditor)
|
|
{
|
|
Material material = materialEditor.target as Material;
|
|
|
|
if (type == 1)
|
|
{
|
|
if (material.HasProperty(keyword))
|
|
{
|
|
if (value1 == material.GetFloat(keyword) || value2 == material.GetFloat(keyword) || value3 == material.GetFloat(keyword))
|
|
{
|
|
GUI.enabled = true;
|
|
}
|
|
else
|
|
{
|
|
GUI.enabled = false;
|
|
}
|
|
}
|
|
}
|
|
else if (type == 0)
|
|
{
|
|
if (keyword == "ON")
|
|
{
|
|
GUI.enabled = true;
|
|
}
|
|
else if (keyword == "OFF")
|
|
{
|
|
GUI.enabled = false;
|
|
}
|
|
else if (material.IsKeywordEnabled(keyword))
|
|
{
|
|
GUI.enabled = true;
|
|
}
|
|
else
|
|
{
|
|
GUI.enabled = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public override float GetPropertyHeight(MaterialProperty prop, string label, MaterialEditor editor)
|
|
{
|
|
return -2;
|
|
}
|
|
}
|
|
} |