66 lines
2.5 KiB
C#
66 lines
2.5 KiB
C#
// Stylized Water 3 by Staggart Creations (http://staggart.xyz)
|
|
// COPYRIGHT PROTECTED UNDER THE UNITY ASSET STORE EULA (https://unity.com/legal/as-terms)
|
|
// • Copying or referencing source code for the production of new asset store, or public, content is strictly prohibited!
|
|
// • Uploading this file to a public repository will subject it to an automated DMCA takedown request.
|
|
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace StylizedWater3
|
|
{
|
|
//Use as "[MinMaxSlider(0, 5)]" on a material property. Proper should be a Vector type
|
|
public class MinMaxSliderDrawer : MaterialPropertyDrawer
|
|
{
|
|
private readonly float min;
|
|
private readonly float max;
|
|
|
|
private Rect minFieldRect;
|
|
private Rect sliderFieldRect;
|
|
private Rect maxFieldRect;
|
|
|
|
public MinMaxSliderDrawer(float min, float max)
|
|
{
|
|
this.min = min;
|
|
this.max = max;
|
|
}
|
|
|
|
public override void OnGUI(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor)
|
|
{
|
|
MaterialEditor.BeginProperty(prop);
|
|
|
|
float minVal = prop.vectorValue.x;
|
|
float maxVal = prop.vectorValue.y;
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
EditorGUI.showMixedValue = prop.hasMixedValue;
|
|
|
|
Rect labelRect = position;
|
|
labelRect.width = EditorGUIUtility.labelWidth;
|
|
EditorGUI.LabelField(labelRect, label);
|
|
|
|
minFieldRect = labelRect;
|
|
minFieldRect.x = labelRect.x + labelRect.width;
|
|
minFieldRect.width = EditorGUIUtility.fieldWidth;
|
|
minVal = EditorGUI.FloatField(minFieldRect, minVal);
|
|
|
|
sliderFieldRect = labelRect;
|
|
sliderFieldRect.x = minFieldRect.x + minFieldRect.width + 5f;
|
|
sliderFieldRect.width = position.width - (EditorGUIUtility.fieldWidth * 2f) - labelRect.width - 10f;
|
|
|
|
EditorGUI.MinMaxSlider(sliderFieldRect, ref minVal, ref maxVal, min, max);
|
|
|
|
maxFieldRect = labelRect;
|
|
maxFieldRect.x = sliderFieldRect.x + sliderFieldRect.width + 5f;
|
|
maxFieldRect.width = EditorGUIUtility.fieldWidth;
|
|
maxVal = EditorGUI.FloatField(maxFieldRect, maxVal);
|
|
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
prop.vectorValue = new Vector4(minVal, maxVal);
|
|
}
|
|
EditorGUI.showMixedValue = false;
|
|
|
|
MaterialEditor.EndProperty();
|
|
}
|
|
}
|
|
} |