|
1 | 1 | using UnityEditor; |
| 2 | +using UnityEditor.Build; |
| 3 | +using UnityEditor.PackageManager; |
2 | 4 | using UnityEngine; |
3 | 5 |
|
4 | 6 | namespace UnityVolumeRendering |
5 | 7 | { |
6 | 8 | /// <summary> |
7 | 9 | /// Automatically adds scripting define symbols when render pipeline packages are detected. |
8 | 10 | /// This allows shaders to use #ifdef UVR_URP and #ifdef UVR_HDRP to conditionally compile code. |
| 11 | + /// Updates automatically on Unity load, when build target changes, and when packages are added/removed. |
9 | 12 | /// </summary> |
10 | 13 | [InitializeOnLoad] |
11 | | - public class RenderPipelineDefinesSetup |
| 14 | + public class RenderPipelineDefinesSetup : IActiveBuildTargetChanged |
12 | 15 | { |
13 | 16 | private const string URP_DEFINE = "UVR_URP"; |
14 | 17 | private const string HDRP_DEFINE = "UVR_HDRP"; |
| 18 | + private const string URP_PACKAGE = "com.unity.render-pipelines.universal"; |
| 19 | + private const string HDRP_PACKAGE = "com.unity.render-pipelines.high-definition"; |
| 20 | + |
| 21 | + // IActiveBuildTargetChanged implementation |
| 22 | + public int callbackOrder => 0; |
15 | 23 |
|
16 | 24 | static RenderPipelineDefinesSetup() |
| 25 | + { |
| 26 | + // Run on Unity load |
| 27 | + UpdateDefines(); |
| 28 | + |
| 29 | + // Subscribe to package manager events |
| 30 | + Events.registeredPackages += OnPackagesChanged; |
| 31 | + } |
| 32 | + |
| 33 | + /// <summary> |
| 34 | + /// Called when packages are added, removed, or updated. |
| 35 | + /// </summary> |
| 36 | + private static void OnPackagesChanged(PackageRegistrationEventArgs args) |
| 37 | + { |
| 38 | + bool needsUpdate = false; |
| 39 | + |
| 40 | + // Check if any render pipeline packages were added |
| 41 | + foreach (var package in args.added) |
| 42 | + { |
| 43 | + if (package.name == URP_PACKAGE || package.name == HDRP_PACKAGE) |
| 44 | + { |
| 45 | + needsUpdate = true; |
| 46 | + Debug.Log($"[Unity Volume Rendering] Detected package addition: {package.name}"); |
| 47 | + break; |
| 48 | + } |
| 49 | + } |
| 50 | + |
| 51 | + // Check if any render pipeline packages were removed |
| 52 | + if (!needsUpdate) |
| 53 | + { |
| 54 | + foreach (var package in args.removed) |
| 55 | + { |
| 56 | + if (package.name == URP_PACKAGE || package.name == HDRP_PACKAGE) |
| 57 | + { |
| 58 | + needsUpdate = true; |
| 59 | + Debug.Log($"[Unity Volume Rendering] Detected package removal: {package.name}"); |
| 60 | + break; |
| 61 | + } |
| 62 | + } |
| 63 | + } |
| 64 | + |
| 65 | + if (needsUpdate) |
| 66 | + { |
| 67 | + UpdateDefines(); |
| 68 | + } |
| 69 | + } |
| 70 | + |
| 71 | + // Called when build target changes |
| 72 | + public void OnActiveBuildTargetChanged(BuildTarget previousTarget, BuildTarget newTarget) |
17 | 73 | { |
18 | 74 | UpdateDefines(); |
19 | 75 | } |
20 | 76 |
|
21 | | - [MenuItem("Tools/Unity Volume Rendering/Update Render Pipeline Defines")] |
22 | | - public static void UpdateDefines() |
| 77 | + [MenuItem("Volume Rendering/Update Render Pipeline Defines")] |
| 78 | + private static void UpdateDefines() |
23 | 79 | { |
24 | 80 | bool urpInstalled = IsPackageInstalled("com.unity.render-pipelines.universal"); |
25 | 81 | bool hdrpInstalled = IsPackageInstalled("com.unity.render-pipelines.high-definition"); |
26 | 82 |
|
27 | 83 | BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; |
28 | | - string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); |
| 84 | + NamedBuildTarget namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup); |
| 85 | + string currentDefines = PlayerSettings.GetScriptingDefineSymbols(namedBuildTarget); |
29 | 86 |
|
30 | 87 | bool modified = false; |
31 | 88 |
|
@@ -59,7 +116,7 @@ public static void UpdateDefines() |
59 | 116 |
|
60 | 117 | if (modified) |
61 | 118 | { |
62 | | - PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, currentDefines); |
| 119 | + PlayerSettings.SetScriptingDefineSymbols(namedBuildTarget, currentDefines); |
63 | 120 | } |
64 | 121 | } |
65 | 122 |
|
|
0 commit comments