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