2021-06-05 09:56:00 +08:00
|
|
|
using System.IO;
|
2021-03-31 21:17:29 +08:00
|
|
|
using UnityEditor;
|
|
|
|
|
using UnityEngine;
|
2022-02-19 22:37:57 +08:00
|
|
|
using XCharts.Runtime;
|
2021-03-31 21:17:29 +08:00
|
|
|
|
2021-12-24 13:33:09 +08:00
|
|
|
namespace XCharts.Editor
|
2021-03-31 21:17:29 +08:00
|
|
|
{
|
|
|
|
|
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)
|
|
|
|
|
{
|
2021-06-05 09:56:00 +08:00
|
|
|
var fileName = Path.GetFileName(assetPath);
|
2022-03-24 08:37:06 +08:00
|
|
|
if (fileName.Equals("XCSettings.asset"))
|
2021-06-05 09:56:00 +08:00
|
|
|
{
|
2021-11-23 13:20:07 +08:00
|
|
|
XCThemeMgr.ReloadThemeList();
|
2021-06-05 09:56:00 +08:00
|
|
|
return;
|
|
|
|
|
}
|
2021-03-31 21:17:29 +08:00
|
|
|
if (!IsThemeAsset(assetPath)) return;
|
2021-11-23 13:20:07 +08:00
|
|
|
var theme = AssetDatabase.LoadAssetAtPath<Theme>(assetPath);
|
|
|
|
|
if (XCSettings.AddCustomTheme(theme))
|
2021-03-31 21:17:29 +08:00
|
|
|
{
|
2021-11-23 13:20:07 +08:00
|
|
|
XCThemeMgr.ReloadThemeList();
|
2021-03-31 21:17:29 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
2021-03-31 21:17:29 +08:00
|
|
|
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();
|
2021-03-31 21:17:29 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static bool IsThemeAsset(string assetPath)
|
|
|
|
|
{
|
2021-11-23 13:20:07 +08:00
|
|
|
if (!assetPath.EndsWith(".asset")) return false;
|
2021-06-12 14:32:23 +08:00
|
|
|
var assetName = Path.GetFileNameWithoutExtension(assetPath);
|
2021-11-23 13:20:07 +08:00
|
|
|
if (!assetName.StartsWith(XCSettings.THEME_ASSET_NAME_PREFIX)) return false;
|
2021-03-31 21:17:29 +08:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|