DefineSetter.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Linq;
  3. namespace UnityEditor.Rendering.PostProcessing
  4. {
  5. //[InitializeOnLoad]
  6. sealed class DefineSetter
  7. {
  8. const string k_Define = "UNITY_POST_PROCESSING_STACK_V2";
  9. static DefineSetter()
  10. {
  11. var targets = Enum.GetValues(typeof(BuildTargetGroup))
  12. .Cast<BuildTargetGroup>()
  13. .Where(x => x != BuildTargetGroup.Unknown)
  14. .Where(x => !IsObsolete(x));
  15. foreach (var target in targets)
  16. {
  17. var defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(target).Trim();
  18. var list = defines.Split(';', ' ')
  19. .Where(x => !string.IsNullOrEmpty(x))
  20. .ToList();
  21. if (list.Contains(k_Define))
  22. continue;
  23. list.Add(k_Define);
  24. defines = list.Aggregate((a, b) => a + ";" + b);
  25. PlayerSettings.SetScriptingDefineSymbolsForGroup(target, defines);
  26. }
  27. }
  28. static bool IsObsolete(BuildTargetGroup group)
  29. {
  30. var attrs = typeof(BuildTargetGroup)
  31. .GetField(group.ToString())
  32. .GetCustomAttributes(typeof(ObsoleteAttribute), false);
  33. return attrs != null && attrs.Length > 0;
  34. }
  35. }
  36. }