using System;
namespace UnityEditor.ProBuilder
{
static class ScriptingSymbolManager
{
static bool IsObsolete(BuildTargetGroup group)
{
var attrs = typeof(BuildTargetGroup).GetField(group.ToString()).GetCustomAttributes(typeof(ObsoleteAttribute), false);
return attrs.Length > 0;
}
internal static bool ContainsDefine(string define)
{
foreach (BuildTargetGroup targetGroup in System.Enum.GetValues(typeof(BuildTargetGroup)))
{
if (targetGroup == BuildTargetGroup.Unknown || IsObsolete(targetGroup))
continue;
string defineSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(targetGroup);
if (!defineSymbols.Contains(define))
return false;
}
return true;
}
///
/// Add a define to the scripting define symbols for every build target.
///
///
public static void AddScriptingDefine(string define)
{
foreach (BuildTargetGroup targetGroup in System.Enum.GetValues(typeof(BuildTargetGroup)))
{
if (targetGroup == BuildTargetGroup.Unknown || IsObsolete(targetGroup))
continue;
string defineSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(targetGroup);
if (!defineSymbols.Contains(define))
{
if (defineSymbols.Length < 1)
defineSymbols = define;
else if (defineSymbols.EndsWith(";"))
defineSymbols = string.Format("{0}{1}", defineSymbols, define);
else
defineSymbols = string.Format("{0};{1}", defineSymbols, define);
PlayerSettings.SetScriptingDefineSymbolsForGroup(targetGroup, defineSymbols);
}
}
}
///
/// Remove a define from the scripting define symbols for every build target.
///
///
public static void RemoveScriptingDefine(string define)
{
foreach (BuildTargetGroup targetGroup in System.Enum.GetValues(typeof(BuildTargetGroup)))
{
if (targetGroup == BuildTargetGroup.Unknown || IsObsolete(targetGroup))
continue;
string defineSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(targetGroup);
if (defineSymbols.Contains(define))
{
defineSymbols = defineSymbols.Replace(string.Format("{0};", define), "");
defineSymbols = defineSymbols.Replace(define, "");
PlayerSettings.SetScriptingDefineSymbolsForGroup(targetGroup, defineSymbols);
}
}
}
}
}