// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
#if UNITY_EDITOR
using System;
using System.IO;
using UnityEditor;
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.Utilities.Editor
{
///
/// A set of utilities to configure script compilation.
///
[Obsolete("The ScriptingUtilities class is obsolete and will be removed from a future version of MRTK. Please use the ScriptUtilities class.")]
public static class ScriptingUtilities
{
///
/// Appends a set of symbolic constant definitions to Unity's Scripting Define Symbols for the
/// specified build target group.
///
/// The name of an optional file locate before appending.
/// The build target group for which the symbols are to be defined.
/// Array of symbols to define.
///
/// To always append the symbols, pass null (or the empty string) for the fileName parameter.
///
[Obsolete("ScriptingUtilities.AppendScriptingDefinitions is obsolete and will be removed from a future version of MRTK. Please use FileUtilities.FindFilesInAssets and ScriptUtilities.AppendScriptingDefinitions.")]
public static void AppendScriptingDefinitions(
string fileName,
BuildTargetGroup targetGroup,
string[] symbols)
{
// Note: Typically, obsolete methods are re-implemented using the replacement versions.
// In this instance, that is not possible as the replacement exists in a separate assembly that is
// not appropriate for referencing (the new assembly is editor only).
if (symbols == null || symbols.Length == 0) { return; }
bool appendSymbols = true;
if (!string.IsNullOrWhiteSpace(fileName))
{
DirectoryInfo assets = new DirectoryInfo(Application.dataPath);
FileInfo[] files = assets.GetFiles(fileName, SearchOption.AllDirectories);
appendSymbols = (files.Length > 0);
}
if (!appendSymbols) { return; }
string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(targetGroup);
foreach (string symbol in symbols)
{
if (string.IsNullOrWhiteSpace(defines))
{
defines = symbol;
continue;
}
if (!defines.Contains(symbol))
{
defines = string.Concat(defines, $";{symbol}");
}
}
PlayerSettings.SetScriptingDefineSymbolsForGroup(targetGroup, defines);
}
}
}
#endif // UNITY_EDITOR