PreprocessorDefine.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Collections.Generic;
  2. using UnityEditor;
  3. namespace Mirror
  4. {
  5. static class PreprocessorDefine
  6. {
  7. /// <summary>
  8. /// Add define symbols as soon as Unity gets done compiling.
  9. /// </summary>
  10. [InitializeOnLoadMethod]
  11. public static void AddDefineSymbols()
  12. {
  13. #if UNITY_2021_2_OR_NEWER
  14. string currentDefines = PlayerSettings.GetScriptingDefineSymbols(UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup(EditorUserBuildSettings.selectedBuildTargetGroup));
  15. #else
  16. // Deprecated in Unity 2023.1
  17. string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
  18. #endif
  19. // Remove oldest when adding next month's symbol.
  20. // Keep a rolling 12 months of symbols.
  21. HashSet<string> defines = new HashSet<string>(currentDefines.Split(';'))
  22. {
  23. "MIRROR",
  24. "MIRROR_70_OR_NEWER",
  25. "MIRROR_71_OR_NEWER",
  26. "MIRROR_73_OR_NEWER",
  27. "MIRROR_78_OR_NEWER",
  28. "MIRROR_79_OR_NEWER",
  29. "MIRROR_81_OR_NEWER",
  30. "MIRROR_82_OR_NEWER",
  31. "MIRROR_83_OR_NEWER",
  32. "MIRROR_84_OR_NEWER",
  33. "MIRROR_85_OR_NEWER",
  34. "MIRROR_86_OR_NEWER"
  35. };
  36. // only touch PlayerSettings if we actually modified it,
  37. // otherwise it shows up as changed in git each time.
  38. string newDefines = string.Join(";", defines);
  39. if (newDefines != currentDefines)
  40. {
  41. #if UNITY_2021_2_OR_NEWER
  42. PlayerSettings.SetScriptingDefineSymbols(UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup(EditorUserBuildSettings.selectedBuildTargetGroup), newDefines);
  43. #else
  44. // Deprecated in Unity 2023.1
  45. PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, newDefines);
  46. #endif
  47. }
  48. }
  49. }
  50. }