c1_unity/Assets/Editor/InspectorTools/PostEffectBehaviourInspector.cs
2023-04-03 11:04:31 +08:00

125 lines
3.5 KiB
C#

using UnityEngine;
using UnityEditor;
using BF;
namespace BFEditor
{
[CustomEditor(typeof(PostEffectBehaviour))]
public class PostEffectBehaviourInspector : Editor
{
PostEffectBehaviour peb;
PostEffectType type;
int vividIterations;
float vividIntensity;
float vividThreshold;
float vividSoftThreshold;
Material fxaaMat;
float blurRadius;
Vector2 radialCenter;
private void OnEnable()
{
peb = target as PostEffectBehaviour;
type = peb.EffectType;
}
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
EditorGUI.BeginChangeCheck();
type = (PostEffectType)EditorGUILayout.EnumFlagsField("effect type", type);
if (EditorGUI.EndChangeCheck())
{
peb.SetPostEffectType(type);
}
if ((type & PostEffectType.VividBloom) != 0)
{
DrawVividBloom();
}
if ((type & PostEffectType.Fxaa) != 0)
{
DrawFxaa();
}
if ((type & PostEffectType.RadialBlur) != 0)
{
DrawRadialBlur();
}
}
void DrawVividBloom()
{
EditorGUILayout.LabelField("Vivid Bloom: ");
EditorGUI.BeginChangeCheck();
vividIterations = peb.VividBloomEffect.Iterations;
vividIterations = EditorGUILayout.IntSlider("iterations", vividIterations, 1, 4);
if (EditorGUI.EndChangeCheck())
{
peb.VividBloomEffect.SetIterations(vividIterations);
}
EditorGUI.BeginChangeCheck();
vividIntensity = peb.VividBloomEffect.Intensity;
vividIntensity = EditorGUILayout.Slider("intensity", vividIntensity, 0.0f, 3.0f);
if (EditorGUI.EndChangeCheck())
{
peb.VividBloomEffect.SetIntensity(vividIntensity);
}
EditorGUI.BeginChangeCheck();
vividThreshold = peb.VividBloomEffect.Threshold;
vividThreshold = EditorGUILayout.Slider("threshold", vividThreshold, 0.0f, 10.0f);
if (EditorGUI.EndChangeCheck())
{
peb.VividBloomEffect.SetThreshold(vividThreshold);
}
EditorGUI.BeginChangeCheck();
vividSoftThreshold = peb.VividBloomEffect.SoftThreshold;
vividSoftThreshold = EditorGUILayout.Slider("softThreshold", vividSoftThreshold, 0.0f, 1.0f);
if (EditorGUI.EndChangeCheck())
{
peb.VividBloomEffect.SetSoftThreshold(vividSoftThreshold);
}
EditorGUILayout.Space();
}
void DrawFxaa()
{
EditorGUILayout.LabelField("Fxaa: ");
fxaaMat = peb.FxaaEffect.FxaaMaterial;
EditorGUILayout.ObjectField("fxaa material", fxaaMat, typeof(Material), true);
EditorGUILayout.Space();
}
void DrawRadialBlur()
{
EditorGUILayout.LabelField("RadialBlur: ");
EditorGUI.BeginChangeCheck();
blurRadius = peb.RadialBlurEffetc.BlurRadius;
blurRadius = EditorGUILayout.Slider("blurRadius", blurRadius, 0.0f, 1.0f);
if (EditorGUI.EndChangeCheck())
{
peb.RadialBlurEffetc.SetBlurRadius(blurRadius);
}
EditorGUI.BeginChangeCheck();
radialCenter = peb.RadialBlurEffetc.RadialCenter;
radialCenter = EditorGUILayout.Vector2Field("radialCenter", radialCenter);
if (EditorGUI.EndChangeCheck())
{
peb.RadialBlurEffetc.SetRadialCenter(radialCenter);
}
EditorGUILayout.Space();
}
}
}