151 lines
3.6 KiB
C#
151 lines
3.6 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace AllIn13DShader
|
|
{
|
|
public class EffectsProfileTabDrawer : AssetWindowTabDrawer
|
|
{
|
|
private const string TAB_NAME = "Active Effects List";
|
|
|
|
private EffectsProfileCollection effectsProfileCollection;
|
|
private EffectsProfile effectsProfile;
|
|
private PropertiesConfig propertiesConfig;
|
|
|
|
public EffectsProfileTabDrawer(PropertiesConfig propertiesConfig, GlobalConfiguration globalConfiguration, CommonStyles commonStyles, AllIn13DShaderWindow parentWindow) : base(commonStyles, parentWindow)
|
|
{
|
|
this.propertiesConfig = propertiesConfig;
|
|
this.effectsProfileCollection = globalConfiguration.effectsProfileCollection;
|
|
this.effectsProfile = effectsProfileCollection.generalProfile;
|
|
}
|
|
|
|
public override void Draw()
|
|
{
|
|
EditorGUILayout.BeginHorizontal();
|
|
if(GUILayout.Button("Enable All"))
|
|
{
|
|
EnableAll();
|
|
}
|
|
|
|
if(GUILayout.Button("Disable All"))
|
|
{
|
|
DisableAll();
|
|
}
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
for(int i = 0; i < effectsProfile.groups.Count; i++)
|
|
{
|
|
DrawGroup(effectsProfile.groups[i]);
|
|
}
|
|
bool hasChanges = EditorGUI.EndChangeCheck();
|
|
if (hasChanges)
|
|
{
|
|
EditorUtility.SetDirty(effectsProfileCollection);
|
|
}
|
|
|
|
if (GUILayout.Button("Configure"))
|
|
{
|
|
Configure();
|
|
}
|
|
}
|
|
|
|
public override void EnteredPlayMode()
|
|
{
|
|
|
|
}
|
|
|
|
public override void Hide()
|
|
{
|
|
|
|
}
|
|
|
|
public override void OnDisable()
|
|
{
|
|
|
|
}
|
|
|
|
public override void OnEnable()
|
|
{
|
|
|
|
}
|
|
|
|
public override void Show()
|
|
{
|
|
|
|
}
|
|
|
|
private void Configure()
|
|
{
|
|
ShaderFeaturesFileCreator.CreateFile(effectsProfile);
|
|
}
|
|
|
|
private void DrawGroup(EffectsProfileGroup effectsProfileGroup)
|
|
{
|
|
EditorGUILayout.BeginVertical();
|
|
GUILayout.Label(effectsProfileGroup.effectGroupConfig.displayName, commonStyles.bigLabel);
|
|
|
|
for(int i = 0; i < effectsProfileGroup.entries.Count; i++)
|
|
{
|
|
DrawEntry(effectsProfileGroup.entries[i]);
|
|
}
|
|
|
|
GUILayout.Space(15f);
|
|
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
|
|
private void DrawEntry(EffectsProfileEntry entry)
|
|
{
|
|
string label = $"{entry.GetDisplayIndex()}. {entry.displayName}";
|
|
|
|
AllIn13DEffectConfig effectConfig = propertiesConfig.FindEffectConfigByID(entry.effectID);
|
|
entry.BindEffectConfig(effectConfig);
|
|
|
|
EditorGUILayout.BeginVertical();
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
entry.isEnabled = GUILayout.Toggle(entry.isEnabled, string.Empty, GUILayout.Width(15));
|
|
GUILayout.Label(label, GUILayout.Width(200f));
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
EditorGUILayout.EndVertical();
|
|
}
|
|
|
|
private void DrawSubKeywordToggle(SubkeywordEntryToggle subkeywordEntryToggle)
|
|
{
|
|
EditorGUILayout.BeginHorizontal(commonStyles.shaderPropertiesStyle);
|
|
|
|
subkeywordEntryToggle.isEnabled = GUILayout.Toggle(subkeywordEntryToggle.isEnabled, string.Empty, GUILayout.Width(15));
|
|
GUILayout.Label(subkeywordEntryToggle.displayName, GUILayout.Width(200f));
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
}
|
|
|
|
private void DrawSubKeywordEnum(SubkeywordEntryEnum subkeywordEntryEnum)
|
|
{
|
|
EditorGUILayout.BeginHorizontal(commonStyles.shaderPropertiesStyle);
|
|
|
|
subkeywordEntryEnum.kwIndexEnabled = EditorGUILayout.Popup(subkeywordEntryEnum.kwIndexEnabled, subkeywordEntryEnum.displayNames);
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
}
|
|
|
|
private void EnableAll()
|
|
{
|
|
effectsProfile.EnableAllEffects();
|
|
EditorUtility.SetDirty(effectsProfileCollection);
|
|
}
|
|
|
|
private void DisableAll()
|
|
{
|
|
effectsProfile.DisableAllEffects();
|
|
EditorUtility.SetDirty(effectsProfileCollection);
|
|
}
|
|
|
|
public override string GetTabName()
|
|
{
|
|
return TAB_NAME;
|
|
}
|
|
}
|
|
} |