| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | using System.IO;using UnityEditor;using UnityEngine;using XCharts.Runtime;namespace XCharts.Editor{    internal static class XChartsDaemon    {        public class XChartsAssetPostprocessor : 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);            if (fileName.Equals("XCSettings.asset"))            {                CheckAsmdef();                XCThemeMgr.ReloadThemeList();            }            else if (IsThemeAsset(assetPath))            {                var theme = AssetDatabase.LoadAssetAtPath<Theme>(assetPath);                if (XCSettings.AddCustomTheme(theme))                {                    XCThemeMgr.ReloadThemeList();                }            }        }        public static void CheckAsmdef()        {#if UNITY_2017_1_OR_NEWER#if dUI_TextMeshPro            XChartsEditor.CheckAsmdefTmpReference(true);#else            XChartsEditor.CheckAsmdefTmpReference(false);#endif#elif UNITY_2019_1_OR_NEWER#if INPUT_SYSTEM_ENABLED            XChartsEditor.CheckAsmdefInputSystemReference(true);#else            XChartsEditor.CheckAsmdefInputSystemReference(false);#endif#endif        }        public static void CheckDeletedAsset(string assetPath)        {            if (!IsThemeAsset(assetPath)) return;            if (XCSettings.Instance == null) return;            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)            {                XCThemeMgr.ReloadThemeList();            }        }        private static bool IsThemeAsset(string assetPath)        {            if (!assetPath.EndsWith(".asset")) return false;            var assetName = Path.GetFileNameWithoutExtension(assetPath);            if (!assetName.StartsWith(XCSettings.THEME_ASSET_NAME_PREFIX)) return false;            return true;        }    }}
 |