[Add] All in one shader
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user