2025-10-21 14:18:31 +09:00

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();
}
}
}