You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
6.7 KiB
191 lines
6.7 KiB
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
using UnityEditorInternal;
|
|
|
|
namespace UnityEditor.Rendering
|
|
{
|
|
[VolumeParameterDrawer(typeof(MinIntParameter))]
|
|
sealed class MinIntParameterDrawer : VolumeParameterDrawer
|
|
{
|
|
public override bool OnGUI(SerializedDataParameter parameter, GUIContent title)
|
|
{
|
|
var value = parameter.value;
|
|
|
|
if (value.propertyType != SerializedPropertyType.Integer)
|
|
return false;
|
|
|
|
var o = parameter.GetObjectRef<MinIntParameter>();
|
|
EditorGUILayout.PropertyField(value, title);
|
|
value.intValue = Mathf.Max(value.intValue, o.min);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
[VolumeParameterDrawer(typeof(NoInterpMinIntParameter))]
|
|
sealed class NoInterpMinIntParameterDrawer : VolumeParameterDrawer
|
|
{
|
|
public override bool OnGUI(SerializedDataParameter parameter, GUIContent title)
|
|
{
|
|
var value = parameter.value;
|
|
|
|
if (value.propertyType != SerializedPropertyType.Integer)
|
|
return false;
|
|
|
|
var o = parameter.GetObjectRef<NoInterpMinIntParameter>();
|
|
EditorGUILayout.PropertyField(value, title);
|
|
value.intValue = Mathf.Max(value.intValue, o.min);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
[VolumeParameterDrawer(typeof(MaxIntParameter))]
|
|
sealed class MaxIntParameterDrawer : VolumeParameterDrawer
|
|
{
|
|
public override bool OnGUI(SerializedDataParameter parameter, GUIContent title)
|
|
{
|
|
var value = parameter.value;
|
|
|
|
if (value.propertyType != SerializedPropertyType.Integer)
|
|
return false;
|
|
|
|
var o = parameter.GetObjectRef<MaxIntParameter>();
|
|
EditorGUILayout.PropertyField(value, title);
|
|
value.intValue = Mathf.Min(value.intValue, o.max);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
[VolumeParameterDrawer(typeof(NoInterpMaxIntParameter))]
|
|
sealed class NoInterpMaxIntParameterDrawer : VolumeParameterDrawer
|
|
{
|
|
public override bool OnGUI(SerializedDataParameter parameter, GUIContent title)
|
|
{
|
|
var value = parameter.value;
|
|
|
|
if (value.propertyType != SerializedPropertyType.Integer)
|
|
return false;
|
|
|
|
var o = parameter.GetObjectRef<NoInterpMaxIntParameter>();
|
|
EditorGUILayout.PropertyField(value, title);
|
|
value.intValue = Mathf.Min(value.intValue, o.max);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
[VolumeParameterDrawer(typeof(ClampedIntParameter))]
|
|
sealed class ClampedIntParameterDrawer : VolumeParameterDrawer
|
|
{
|
|
public override bool OnGUI(SerializedDataParameter parameter, GUIContent title)
|
|
{
|
|
var value = parameter.value;
|
|
|
|
if (value.propertyType != SerializedPropertyType.Integer)
|
|
return false;
|
|
|
|
var o = parameter.GetObjectRef<ClampedIntParameter>();
|
|
var lineRect = EditorGUILayout.GetControlRect();
|
|
EditorGUI.BeginProperty(lineRect, title, value);
|
|
EditorGUI.IntSlider(lineRect, value, o.min, o.max, title);
|
|
value.intValue = Mathf.Clamp(value.intValue, o.min, o.max);
|
|
EditorGUI.EndProperty();
|
|
return true;
|
|
}
|
|
}
|
|
|
|
[VolumeParameterDrawer(typeof(NoInterpClampedIntParameter))]
|
|
sealed class NoInterpClampedIntParameterDrawer : VolumeParameterDrawer
|
|
{
|
|
public override bool OnGUI(SerializedDataParameter parameter, GUIContent title)
|
|
{
|
|
var value = parameter.value;
|
|
|
|
if (value.propertyType != SerializedPropertyType.Integer)
|
|
return false;
|
|
|
|
var o = parameter.GetObjectRef<NoInterpClampedIntParameter>();
|
|
var lineRect = EditorGUILayout.GetControlRect();
|
|
EditorGUI.BeginProperty(lineRect, title, value);
|
|
EditorGUI.IntSlider(lineRect, value, o.min, o.max, title);
|
|
value.intValue = Mathf.Clamp(value.intValue, o.min, o.max);
|
|
EditorGUI.EndProperty();
|
|
return true;
|
|
}
|
|
}
|
|
|
|
[VolumeParameterDrawer(typeof(LayerMaskParameter))]
|
|
sealed class LayerMaskParameterDrawer : VolumeParameterDrawer
|
|
{
|
|
private static int FieldToLayerMask(int field)
|
|
{
|
|
int mask = 0;
|
|
var layers = InternalEditorUtility.layers;
|
|
bool everything = true;
|
|
for (int c = 0; c < layers.Length; c++)
|
|
{
|
|
if ((field & (1 << c)) != 0)
|
|
mask |= 1 << LayerMask.NameToLayer(layers[c]);
|
|
else
|
|
{
|
|
mask &= ~(1 << LayerMask.NameToLayer(layers[c]));
|
|
everything = false;
|
|
}
|
|
}
|
|
|
|
return everything ? -1 : mask;
|
|
}
|
|
|
|
private static int LayerMaskToField(int mask)
|
|
{
|
|
int field = 0;
|
|
var layers = InternalEditorUtility.layers;
|
|
bool everything = true;
|
|
for (int c = 0; c < layers.Length; c++)
|
|
{
|
|
if ((mask & (1 << LayerMask.NameToLayer(layers[c]))) != 0)
|
|
field |= 1 << c;
|
|
else
|
|
everything = false;
|
|
}
|
|
|
|
return everything ? -1 : field;
|
|
}
|
|
|
|
public override bool OnGUI(SerializedDataParameter parameter, GUIContent title)
|
|
{
|
|
var value = parameter.value;
|
|
|
|
if (value.propertyType != SerializedPropertyType.LayerMask)
|
|
return false;
|
|
|
|
var lineRect = EditorGUILayout.GetControlRect();
|
|
EditorGUI.BeginProperty(lineRect, title, value);
|
|
value.intValue = FieldToLayerMask(
|
|
EditorGUI.MaskField(lineRect, title, LayerMaskToField(value.intValue), InternalEditorUtility.layers));
|
|
EditorGUI.EndProperty();
|
|
return true;
|
|
}
|
|
}
|
|
|
|
[VolumeParameterDrawer(typeof(RenderingLayerMaskParameter))]
|
|
sealed class RenderingLayerMaskParameterDrawer : VolumeParameterDrawer
|
|
{
|
|
public override bool OnGUI(SerializedDataParameter parameter, GUIContent title)
|
|
{
|
|
var value = parameter.value;
|
|
|
|
if (value.propertyType != SerializedPropertyType.RenderingLayerMask)
|
|
return false;
|
|
|
|
var names = RenderingLayerMask.GetDefinedRenderingLayerNames();
|
|
|
|
var lineRect = EditorGUILayout.GetControlRect();
|
|
EditorGUI.BeginProperty(lineRect, title, value);
|
|
EditorGUI.BeginChangeCheck();
|
|
var newVal= EditorGUI.RenderingLayerMaskField(lineRect, title, value.uintValue);
|
|
if (EditorGUI.EndChangeCheck())
|
|
value.uintValue = newVal;
|
|
EditorGUI.EndProperty();
|
|
return true;
|
|
}
|
|
}
|
|
}
|