37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
using UnityEditor;
|
|
|
|
public class LuxURPDistanceFadeDrawer : MaterialPropertyDrawer {
|
|
|
|
public override void OnGUI (Rect position, MaterialProperty prop, string label, MaterialEditor editor) {
|
|
|
|
// Needed since Unity 2019
|
|
EditorGUIUtility.labelWidth = 0;
|
|
|
|
Vector2 vec2value = prop.vectorValue;
|
|
|
|
vec2value.x = prop.vectorValue.x;
|
|
vec2value.x = Mathf.Sqrt(vec2value.x);
|
|
|
|
vec2value.y = 1.0f / vec2value.y;
|
|
vec2value.y = Mathf.Sqrt(vec2value.y);
|
|
vec2value.y *= 0.5f;
|
|
|
|
GUILayout.Space(-18);
|
|
EditorGUI.BeginChangeCheck();
|
|
EditorGUILayout.BeginVertical();
|
|
vec2value.x = EditorGUILayout.FloatField("Max Distance", vec2value.x);
|
|
vec2value.y = EditorGUILayout.FloatField("Fade Range", vec2value.y);
|
|
EditorGUILayout.EndVertical();
|
|
if (EditorGUI.EndChangeCheck ()) {
|
|
vec2value.x *= vec2value.x;
|
|
vec2value.y *= 2.0f;
|
|
vec2value.y *= vec2value.y;
|
|
// We use OneOver to get around the division in the shader
|
|
vec2value.y = 1.0f / vec2value.y;
|
|
prop.vectorValue = vec2value;
|
|
}
|
|
//EditorGUILayout.Vector2Field("test", prop.vectorValue);
|
|
}
|
|
} |