Files
Lumina-GI/Runtime/HDRP/Scripts/Editor/LuminaHDRPVolumeEditor.cs
T
2025-07-20 19:03:25 +08:00

84 lines
2.7 KiB
C#

using UnityEditor;
using UnityEditor.Rendering;
using UnityEngine;
namespace Artngame.LUMINA {//Kino.PostProcessing {
[VolumeComponentEditor(typeof(LuminaHDRPVolume))]
sealed class LuminaHDRPVolumeEditor : VolumeComponentEditor
{
SerializedDataParameter _opacity;
SerializedDataParameter _edgeColor;
SerializedDataParameter _edgeContrast;
SerializedDataParameter _fillColor;
SerializedDataParameter _blurWidth;
SerializedDataParameter _blurFrequency;
SerializedDataParameter _hueShift;
SerializedDataParameter _interval;
SerializedDataParameter _iteration;
SerializedDataParameter _overlayMode;
SerializedDataParameter _overlayTexture;
SerializedDataParameter _overlayOpacity;
static class Labels
{
public static GUIContent Opacity = new GUIContent("Opacity");
public static GUIContent Texture = new GUIContent("Texture");
}
public override void OnEnable()
{
var o = new PropertyFetcher<LuminaHDRPVolume>(serializedObject);
_opacity = Unpack(o.Find(x => x.opacity ));
_edgeColor = Unpack(o.Find(x => x.edgeColor ));
_edgeContrast = Unpack(o.Find(x => x.edgeContrast ));
_fillColor = Unpack(o.Find(x => x.fillColor ));
_blurWidth = Unpack(o.Find(x => x.blurWidth ));
_blurFrequency = Unpack(o.Find(x => x.blurFrequency ));
_hueShift = Unpack(o.Find(x => x.hueShift ));
_interval = Unpack(o.Find(x => x.interval ));
_iteration = Unpack(o.Find(x => x.iteration ));
_overlayMode = Unpack(o.Find(x => x.overlayMode ));
_overlayTexture = Unpack(o.Find(x => x.overlayTexture));
_overlayOpacity = Unpack(o.Find(x => x.overlayOpacity));
}
public override void OnInspectorGUI()
{
PropertyField(_opacity);
EditorGUILayout.Space();
PropertyField(_edgeColor);
PropertyField(_edgeContrast);
EditorGUILayout.Space();
PropertyField(_fillColor);
PropertyField(_blurWidth);
PropertyField(_blurFrequency);
PropertyField(_hueShift);
EditorGUILayout.Space();
PropertyField(_interval);
PropertyField(_iteration);
EditorGUILayout.Space();
PropertyField(_overlayMode);
if (_overlayMode.value.hasMultipleDifferentValues ||
_overlayMode.value.enumValueIndex != 0)
{
EditorGUI.indentLevel++;
PropertyField(_overlayTexture, Labels.Texture);
PropertyField(_overlayOpacity, Labels.Opacity);
EditorGUI.indentLevel--;
}
}
}
} // namespace Kino.PostProcessing