83 lines
1.9 KiB
C#
83 lines
1.9 KiB
C#
using System.Collections.Generic;
|
|
using UnityEditor;
|
|
|
|
|
|
/// <summary>
|
|
/// Utility class that manages Define Symbols for a given set of build targets.
|
|
/// </summary>
|
|
public class DefineSymbolsManager {
|
|
private Dictionary<BuildTargetGroup, DefineSymbols> defineSymbols = new Dictionary<BuildTargetGroup, DefineSymbols>();
|
|
|
|
public DefineSymbolsManager(BuildTargetGroup[] groups)
|
|
{
|
|
foreach (var group in groups)
|
|
{
|
|
var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(group);
|
|
defineSymbols.Add(group, new DefineSymbols(symbols));
|
|
}
|
|
}
|
|
|
|
public void UpdateFromBuildSettings()
|
|
{
|
|
var groups = defineSymbols.Keys;
|
|
defineSymbols = new Dictionary<BuildTargetGroup, DefineSymbols>();
|
|
|
|
foreach (var group in groups)
|
|
{
|
|
var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(group);
|
|
defineSymbols.Add(group, new DefineSymbols(symbols));
|
|
}
|
|
|
|
}
|
|
|
|
public void ApplyToBuildSettings()
|
|
{
|
|
foreach (var e in defineSymbols)
|
|
{
|
|
PlayerSettings.SetScriptingDefineSymbolsForGroup(e.Key, e.Value.Get());
|
|
}
|
|
}
|
|
|
|
public void Add(string symbol)
|
|
{
|
|
foreach (var item in defineSymbols)
|
|
{
|
|
item.Value.Add(symbol);
|
|
}
|
|
}
|
|
|
|
public void Remove(string symbol)
|
|
{
|
|
foreach (var item in defineSymbols)
|
|
{
|
|
item.Value.Remove(symbol);
|
|
}
|
|
}
|
|
|
|
public bool Has(string symbol)
|
|
{
|
|
var has = true;
|
|
|
|
foreach (var item in defineSymbols)
|
|
{
|
|
has = has && item.Value.Has(symbol);
|
|
}
|
|
|
|
return has;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
var str = "DefineSymbolsManager {\n";
|
|
|
|
foreach (var item in defineSymbols)
|
|
{
|
|
str += item.Key + ": " + item.Value.Get() + "\n";
|
|
}
|
|
|
|
str += "}";
|
|
|
|
return str;
|
|
}
|
|
}
|