Files
XCharts/Editor/Utilities/ThemeCheck.cs

71 lines
2.1 KiB
C#
Raw Normal View History

using System.IO;
using UnityEditor;
using UnityEngine;
2022-02-19 22:37:57 +08:00
using XCharts.Runtime;
2021-12-24 13:33:09 +08:00
namespace XCharts.Editor
{
internal static class ThemeCheck
{
public class ThemeAssetPostprocessor : AssetPostprocessor
{
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets,
string[] movedFromAssetsPaths)
{
foreach (var assetPath in importedAssets)
{
CheckAddedAsset(assetPath);
}
foreach (var assetPath in deletedAssets)
{
CheckDeletedAsset(assetPath);
}
}
}
public static void CheckAddedAsset(string assetPath)
{
var fileName = Path.GetFileName(assetPath);
2022-03-24 08:37:06 +08:00
if (fileName.Equals("XCSettings.asset"))
{
2021-11-23 13:20:07 +08:00
XCThemeMgr.ReloadThemeList();
return;
}
if (!IsThemeAsset(assetPath)) return;
2021-11-23 13:20:07 +08:00
var theme = AssetDatabase.LoadAssetAtPath<Theme>(assetPath);
if (XCSettings.AddCustomTheme(theme))
{
2021-11-23 13:20:07 +08:00
XCThemeMgr.ReloadThemeList();
}
}
public static void CheckDeletedAsset(string assetPath)
{
if (!IsThemeAsset(assetPath)) return;
2022-03-27 12:49:20 +08:00
if (XCSettings.Instance == null) return;
2021-11-23 13:20:07 +08:00
var themes = XCSettings.customThemes;
var changed = false;
for (int i = themes.Count - 1; i >= 0; i--)
{
if (themes[i] == null)
{
themes.RemoveAt(i);
changed = true;
}
}
if (changed)
{
2021-11-23 13:20:07 +08:00
XCThemeMgr.ReloadThemeList();
}
}
private static bool IsThemeAsset(string assetPath)
{
2021-11-23 13:20:07 +08:00
if (!assetPath.EndsWith(".asset")) return false;
var assetName = Path.GetFileNameWithoutExtension(assetPath);
2021-11-23 13:20:07 +08:00
if (!assetName.StartsWith(XCSettings.THEME_ASSET_NAME_PREFIX)) return false;
return true;
}
}
}