Files
Fishing2/Assets/Procedural Worlds/GeNa/Scripts/Editor/CommandBufferManagerEditor.cs
2026-02-28 12:43:44 +08:00

107 lines
3.3 KiB
C#

using UnityEngine;
using UnityEditor;
using PWCommon5;
using UnityEngine.Rendering;
namespace GeNa.Core
{
[InitializeOnLoad]
public static class CommandBufferManagerEvent
{
static CommandBufferManagerEvent()
{
GeNaEvents.CreateBufferManager = CommandBufferManager.CreateBufferManager;
}
}
[CustomEditor(typeof(CommandBufferManager))]
public class CommandBufferManagerEditor : PWEditor
{
private EditorUtils m_editorUtils;
private CommandBufferManager m_bufferManager;
//Variables
private bool HDR;
private PW_RENDER_SIZE RenderSize;
private CameraEvent RefractionCameraEvent;
private void OnEnable()
{
if (m_editorUtils == null)
{
m_editorUtils = PWApp.GetEditorUtils(this, null, null, null);
}
m_bufferManager = (CommandBufferManager)target;
}
public override void OnInspectorGUI()
{
m_editorUtils.Initialize();
if (m_bufferManager == null)
{
m_bufferManager = (CommandBufferManager)target;
}
m_editorUtils.Panel("GlobalSettings", GlobalPanel, true);
}
private void GlobalPanel(bool helpEnabled)
{
EditorGUI.BeginChangeCheck();
m_editorUtils.Heading("GlobalSettings");
HDR = m_bufferManager.m_allowHDR;
HDR = m_editorUtils.Toggle("AllowHDR", HDR, helpEnabled);
RenderSize = m_bufferManager.m_renderSize;
RenderSize = (PW_RENDER_SIZE)m_editorUtils.EnumPopup("RenderResolution", RenderSize, helpEnabled);
EditorGUILayout.Space();
m_editorUtils.Heading("RefreactionSettings");
RefractionCameraEvent = m_bufferManager.m_cameraEventRefraction;
if (Application.isPlaying)
{
EditorGUILayout.HelpBox(m_editorUtils.GetTextValue("CantBeChangedAtRunTime"), MessageType.Info);
GUI.enabled = false;
}
RefractionCameraEvent = (CameraEvent)m_editorUtils.EnumPopup("RefractionCameraEvent", RefractionCameraEvent, helpEnabled);
GUI.enabled = true;
if (EditorGUI.EndChangeCheck())
{
if (ChangesMade())
{
m_bufferManager.ClearBuffers();
m_bufferManager.m_allowHDR = HDR;
m_bufferManager.m_renderSize = RenderSize;
m_bufferManager.m_cameraEventRefraction = RefractionCameraEvent;
m_bufferManager.RebuildBuffers(false);
EditorUtility.SetDirty(m_bufferManager);
}
}
}
/// <summary>
/// Has one of the variables been changed?
/// </summary>
/// <returns></returns>
private bool ChangesMade()
{
if (HDR != m_bufferManager.m_allowHDR)
{
return true;
}
if (RenderSize != m_bufferManager.m_renderSize)
{
return true;
}
if (RefractionCameraEvent != m_bufferManager.m_cameraEventRefraction)
{
return true;
}
return false;
}
}
}