Files
2026-02-23 22:01:07 +07:00

101 lines
2.8 KiB
C#

using UnityEditor;
using UnityEngine;
namespace AllIn13DShader
{
public class OtherTabDrawer : AssetWindowTabDrawer
{
private const string TAB_NAME = "Other";
private GlobalConfiguration globalConfiguration;
public OtherTabDrawer(GlobalConfiguration globalConfiguration, CommonStyles commonStyles, AllIn13DShaderWindow parentWindow) : base(commonStyles, parentWindow)
{
this.globalConfiguration = globalConfiguration;
if (globalConfiguration.defaultPreset == null)
{
globalConfiguration.projectType = GlobalConfiguration.ProjectType.STANDARD_BASIC;
globalConfiguration.RefreshDefaultMaterial();
globalConfiguration.Save();
}
}
public override void Show()
{
}
public override void Hide()
{
}
public override void OnEnable()
{
}
public override void OnDisable()
{
}
public override void EnteredPlayMode()
{
}
public override void Draw()
{
GUILayout.Label("Default Materials", commonStyles.bigLabel);
GUILayout.Space(20);
EditorGUI.BeginChangeCheck();
globalConfiguration.projectType = (GlobalConfiguration.ProjectType)EditorGUILayout.EnumPopup("Project Type", globalConfiguration.projectType);
bool projectTypeChanged = EditorGUI.EndChangeCheck();
bool disabled = globalConfiguration.projectType != GlobalConfiguration.ProjectType.CUSTOM;
EditorGUI.BeginDisabledGroup(disabled);
EditorGUI.BeginChangeCheck();
globalConfiguration.defaultPreset = (Material)EditorGUILayout.ObjectField("Default Material", globalConfiguration.defaultPreset, typeof(Material), false);
bool defaultPresetChanged = EditorGUI.EndChangeCheck();
EditorGUI.EndDisabledGroup();
if (projectTypeChanged)
{
globalConfiguration.RefreshDefaultMaterial();
}
if(projectTypeChanged || defaultPresetChanged)
{
globalConfiguration.Save();
}
EditorGUILayout.Space();
EditorUtils.DrawThinLine();
EditorGUILayout.Space();
EditorGUILayout.Space();
if (GUILayout.Button("Refresh the Material Inspector Properties Configuration"))
{
ShadersCreatorTool.BuildShaderFiles();
PropertiesConfigCollection propertiesConfigCollection = PropertiesConfigCreator.CreateConfig();
EffectsProfileCollection effectsProfileCollection = EffectsProfileCollection.CreateAsset(propertiesConfigCollection);
if (AssetDatabase.IsValidFolder(Constants.DEMO_SHADERS_BAKED_FOLDER_PATH))
{
effectsProfileCollection.CheckBakedShadersFolder(Constants.DEMO_SHADERS_BAKED_FOLDER_PATH, propertiesConfigCollection.propertiesConfig);
}
}
EditorGUILayout.LabelField("The asset uses auto generated cached data to display the properties of the Material inspector\nYou should never need this button", commonStyles.wordWrappedStyle);
}
public override string GetTabName()
{
return TAB_NAME;
}
}
}