Files
com.misaki.hdrp-toon/Runtime/HDRP/Models/UTSRenderPassSettings.cs

65 lines
2.1 KiB
C#

using System;
using System.IO;
using UnityEditor;
using UnityEngine;
namespace Unity.Toonshader
{
[Serializable]
public struct UTSOutlineSetting
{
public bool enable;
public RenderingLayerMask renderingLayer;
}
[Serializable]
public struct UtsHairShadowSetting
{
public bool enable;
public RenderingLayerMask CasterRenderingLayer;
}
[CreateAssetMenu(fileName = "UTSRenderSetting", menuName = "UTS/RenderSetting")]
public class UTSRenderPassSettings : ScriptableObject
{
public const string UTS_RENDERING_SETTINGS_NAME = "UTSRenderingSettings";
public const string UTS_RENDERING_SETTINGS_PATH = "Assets/Resources/Settings/UTSRenderSettings.asset";
public const string UTS_RENDERING_SETTINGS_RESOURCES_PATH = "Settings/UTSRenderSettings";
public UTSOutlineSetting outlineSetting;
public UtsHairShadowSetting hairShadowSetting;
internal static UTSRenderPassSettings GetOrCreateSettings()
{
#if UNITY_EDITOR
if (EditorBuildSettings.TryGetConfigObject<UTSRenderPassSettings>(UTS_RENDERING_SETTINGS_NAME, out var settings))
{
return settings;
}
UTSRenderPassSettings renderingSettings = null;
if (File.Exists(UTS_RENDERING_SETTINGS_PATH))
{
renderingSettings = AssetDatabase.LoadAssetAtPath<UTSRenderPassSettings>(UTS_RENDERING_SETTINGS_PATH);
}
else
{
renderingSettings = CreateInstance<UTSRenderPassSettings>();
AssetDatabase.CreateAsset(renderingSettings, UTS_RENDERING_SETTINGS_PATH);
AssetDatabase.Refresh();
}
EditorBuildSettings.AddConfigObject(UTS_RENDERING_SETTINGS_NAME, renderingSettings, false);
return renderingSettings;
#else
return Resources.Load<UTSRenderPassSettings>(UTS_RENDERING_SETTINGS_RESOURCES_PATH);
#endif
}
public static SerializedObject GetSerializedSettings()
{
return new(GetOrCreateSettings());
}
}
}