79 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			79 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | #if UNITY_EDITOR | ||
|  | using System; | ||
|  | using System.IO; | ||
|  | using UnityEditor; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace Unity.Burst.Editor | ||
|  | { | ||
|  |     /// <summary> | ||
|  |     /// Allow disabling of the Burst compiler for specific assemblies. | ||
|  |     ///  ProjectSettings/Burst_DisableAssembliesForEditorCompilation.json | ||
|  |     ///  ProjectSettings/Burst_DisableAssembliesForPlayerCompilation.json | ||
|  |     ///  ProjectSettings/Burst_DisableAssembliesForPlayerCompilation_{platform}.json // if exists taken in preference to the one immediately above | ||
|  |     /// </summary> | ||
|  |     internal static class BurstAssemblyDisable | ||
|  |     { | ||
|  |         public enum DisableType | ||
|  |         { | ||
|  |             Editor, | ||
|  |             Player | ||
|  |         } | ||
|  | 
 | ||
|  |         private static string GetPath(DisableType type, string platformIdentifier) | ||
|  |         { | ||
|  |             if (DisableType.Editor == type) | ||
|  |             { | ||
|  |                 return "ProjectSettings/Burst_DisableAssembliesForEditorCompilation.json"; | ||
|  |             } | ||
|  |             var platformSpecicPath = $"ProjectSettings/Burst_DisableAssembliesForPlayerCompilation_{platformIdentifier}.json"; | ||
|  |             if (File.Exists(platformSpecicPath)) | ||
|  |             { | ||
|  |                 return platformSpecicPath; | ||
|  |             } | ||
|  |             return "ProjectSettings/Burst_DisableAssembliesForPlayerCompilation.json"; | ||
|  |         } | ||
|  | 
 | ||
|  |         public static string[] GetDisabledAssemblies(DisableType type, string platformIdentifier) | ||
|  |         { | ||
|  |             var pathForSettings = GetPath(type, platformIdentifier); | ||
|  |             if (!File.Exists(pathForSettings)) | ||
|  |             { | ||
|  |                 return Array.Empty<string>(); | ||
|  |             } | ||
|  | 
 | ||
|  |             var settings = new BackwardsCompatWrapper(); | ||
|  |             JsonUtility.FromJsonOverwrite(File.ReadAllText(pathForSettings),settings); | ||
|  |             if (settings == null || settings.MonoBehaviour == null || settings.MonoBehaviour.DisabledAssemblies == null) | ||
|  |             { | ||
|  |                 return Array.Empty<string>(); | ||
|  |             } | ||
|  |             return settings.MonoBehaviour.DisabledAssemblies; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     /// <summary> | ||
|  |     /// Settings file - | ||
|  |     /// | ||
|  |     ///{ | ||
|  |     /// "MonoBehaviour": { | ||
|  |     ///  "DisabledAssemblies": | ||
|  |     ///	  [ | ||
|  |     ///	   "Example.Assembly" | ||
|  |     ///   ] | ||
|  |     /// } | ||
|  |     ///}  | ||
|  |     /// </summary> | ||
|  |     [Serializable] | ||
|  |     class BackwardsCompatWrapper | ||
|  |     { | ||
|  |         public BurstDisableSettings MonoBehaviour; | ||
|  |     } | ||
|  |     [Serializable] | ||
|  |     class BurstDisableSettings | ||
|  |     { | ||
|  |         public string[] DisabledAssemblies; | ||
|  |     } | ||
|  | } | ||
|  | #endif |