using System.Collections.Generic;
using UnityEditor;
namespace RotaryHeart.Lib
{
public class Definer
{
///
/// Applies the defines to the script symbols
///
/// List of defines to add
public static void ApplyDefines(List defines)
{
if (defines == null || defines.Count == 0)
{
return;
}
string availableDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
List definesSplit = new List(availableDefines.Split(';'));
foreach (string define in defines)
{
if (!definesSplit.Contains(define))
{
definesSplit.Add(define);
}
}
_ApplyDefine(string.Join(";", definesSplit.ToArray()));
}
///
/// Removes the defines from the script symbols
///
/// List of defines to remove
public static void RemoveDefines(List defines)
{
if (defines == null || defines.Count == 0)
return;
string availableDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
List definesSplit = new List(availableDefines.Split(';'));
foreach (string define in defines)
{
definesSplit.Remove(define);
}
_ApplyDefine(string.Join(";", definesSplit.ToArray()));
}
///
/// Returns true if a define is already defined
///
/// Define to check
public static bool ContainsDefine(string define)
{
if (string.IsNullOrEmpty(define))
{
return false;
}
string availableDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
List definesSplit = new List(availableDefines.Split(';'));
return definesSplit.Contains(define);
}
///
/// Actual logic that applies the defines symbols
///
/// List of defines to save, this includes the already defined ones
static void _ApplyDefine(string define)
{
if (string.IsNullOrEmpty(define))
{
return;
}
PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, define);
}
}
}