79 lines
3.2 KiB
C#
79 lines
3.2 KiB
C#
using System;
|
|
using UnityEditor;
|
|
using UnityEditor.Build;
|
|
using UnityEditor.Callbacks;
|
|
|
|
class ConfigurationChecker {
|
|
|
|
[DidReloadScripts]
|
|
protected static void DidReloadScripts() {
|
|
CheckUnityMathematics();
|
|
}
|
|
|
|
public static bool CheckUnityMathematics() {
|
|
bool available = isUnityMathematicsAvailable;
|
|
UpdateDefine(available, "UNITY_MATHEMATICS");
|
|
return available;
|
|
}
|
|
|
|
protected static void UpdateDefine(bool enabled, string define) {
|
|
if (enabled)
|
|
GlobalDefine(define);
|
|
else
|
|
GlobalUndefine(define);
|
|
}
|
|
|
|
|
|
public static void GlobalDefine(string name) {
|
|
UnityEngine.Debug.Log("Define " + name);
|
|
BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
|
|
NamedBuildTarget namedBuildTarget = UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup);
|
|
//string scriptDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
|
|
string scriptDefines = PlayerSettings.GetScriptingDefineSymbols(namedBuildTarget);
|
|
if (!scriptDefines.Contains(name)) {
|
|
string newScriptDefines = scriptDefines + " " + name;
|
|
if (EditorUserBuildSettings.selectedBuildTargetGroup != 0)
|
|
PlayerSettings.SetScriptingDefineSymbols(namedBuildTarget, newScriptDefines);
|
|
//PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, newScriptDefines);
|
|
}
|
|
}
|
|
|
|
public static void GlobalUndefine(string name) {
|
|
UnityEngine.Debug.Log("Undefine " + name);
|
|
BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
|
|
NamedBuildTarget namedBuildTarget = UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup);
|
|
// string scriptDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
|
|
string scriptDefines = PlayerSettings.GetScriptingDefineSymbols(namedBuildTarget);
|
|
if (scriptDefines.Contains(name)) {
|
|
int playMakerIndex = scriptDefines.IndexOf(name);
|
|
string newScriptDefines = scriptDefines.Remove(playMakerIndex, name.Length);
|
|
PlayerSettings.SetScriptingDefineSymbols(namedBuildTarget, newScriptDefines);
|
|
// PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, newScriptDefines);
|
|
}
|
|
|
|
}
|
|
|
|
#region Availability
|
|
|
|
#region Packages
|
|
|
|
private static bool isUnityMathematicsAvailable {
|
|
get => DoesTypeExist("Unity.Mathematics.float3");
|
|
// {
|
|
// return DoesTypeExist("Passer.Tracking.HydraBaseStation");
|
|
// }
|
|
}
|
|
#endregion Packages
|
|
|
|
public static bool DoesTypeExist(string className) {
|
|
System.Reflection.Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
|
|
foreach (System.Reflection.Assembly assembly in assemblies) {
|
|
if (assembly.GetType(className) != null)
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
#endregion Availability
|
|
}
|