using UnityEditor; namespace ABI.CCK.Scripts.Editor.AssetProcessing { /// /// Cleans up scripting symbols that were added by the CCK when the CCK is deleted. /// This is done to prevent Third Party scripts from spewing compile errors when doing a fresh import or uninstall. /// public static class CCK_AutoCleanupProcessor { private const string CCK_ROOT_FOLDER = "Assets/ABI.CCK"; // All scripting symbols that can be added by the CCK private static readonly string[] CCK_SCRIPTING_SYMBOLS = { "CVR_CCK_EXISTS", // third party addons "CCK_ADDIN_TRANSLATABLE_TMP", "CCK_ADDIN_HIGHLIGHT_PLUS", "CCK_ADDIN_MAGICACLOTHSUPPORT" }; internal static void OnProcessDeletedAsset(string deletedAsset) { if (deletedAsset == CCK_ROOT_FOLDER) OnCCKLikelyDeleted(); } private static void OnCCKLikelyDeleted() { // Remove for BuildTargetGroups var selectedBuildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; // just in case somehow user is on unsupported build target group var buildTargetGroups = new[] { BuildTargetGroup.Standalone, BuildTargetGroup.Android, selectedBuildTargetGroup }; foreach (BuildTargetGroup buildTargetGroup in buildTargetGroups) { var defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); foreach (var scriptingSymbol in CCK_SCRIPTING_SYMBOLS) if (defines.Contains(scriptingSymbol)) // remove all CCK scripting symbols defines = defines.Replace(scriptingSymbol, ""); PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, defines); } // Remove for NamedBuildTarget ??? // var buildTargets = new[] { NamedBuildTarget.Standalone, NamedBuildTarget.Android }; // foreach (NamedBuildTarget buildTarget in buildTargets) // { // var defines = PlayerSettings.GetScriptingDefineSymbols(buildTarget); // // foreach (var scriptingSymbol in CCK_SCRIPTING_SYMBOLS) // if (defines.Contains(scriptingSymbol)) // remove all CCK scripting symbols // defines = defines.Replace(scriptingSymbol, ""); // // PlayerSettings.SetScriptingDefineSymbols(buildTarget, defines); // } } } }