NanoBrain-unitypackage/Editor/ConfigurationChecker.cs
Pascal Serrarens ce1ff796b8
All checks were successful
Copy Documentation to webserver / copy-documentation (push) Successful in 28s
Added Unity subnamespace
2026-05-08 08:53:27 +02:00

75 lines
2.8 KiB
C#

using System;
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Callbacks;
namespace Passer {
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 = NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup);
string scriptDefines = PlayerSettings.GetScriptingDefineSymbols(namedBuildTarget);
if (!scriptDefines.Contains(name)) {
string newScriptDefines = scriptDefines + " " + name;
if (EditorUserBuildSettings.selectedBuildTargetGroup != 0)
PlayerSettings.SetScriptingDefineSymbols(namedBuildTarget, newScriptDefines);
}
}
public static void GlobalUndefine(string name) {
// UnityEngine.Debug.Log("Undefine " + name);
BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
NamedBuildTarget namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup);
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);
}
}
#region Availability
#region Packages
private static bool isUnityMathematicsAvailable {
get => DoesTypeExist("Unity.Mathematics.float3");
}
#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
}
}