cvr-props/Assets/ABI.CCK/Scripts/Editor/AssetProcessing/CCK_AutoCleanupProcessor.cs

59 lines
No EOL
2.6 KiB
C#
Executable file

using UnityEditor;
namespace ABI.CCK.Scripts.Editor.AssetProcessing
{
/// <summary>
/// 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.
/// </summary>
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);
// }
}
}
}