NanoBrain-unitypackage/Editor/ConfigurationChecker.cs
2026-04-08 09:33:04 +02:00

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
}