1- using System . Collections . Generic ;
2- using System . Linq ;
3- using UnityEditor ;
4- using UnityEngine ;
5- using UnityEngine . Rendering ;
6-
7- [ InitializeOnLoad ]
8- public class RenderingPipelineDefines
9- {
10- enum PipelineType
11- {
12- Unsupported ,
13- BuiltInPipeline ,
14- UniversalPipeline ,
15- HDPipeline
16- }
17-
18- static RenderingPipelineDefines ( )
19- {
20- UpdateDefines ( ) ;
21- }
22-
23- /// <summary>
24- /// Update the unity pipeline defines for URP
25- /// </summary>
26- static void UpdateDefines ( )
27- {
28- var pipeline = GetPipeline ( ) ;
29-
30- if ( pipeline == PipelineType . UniversalPipeline )
31- {
32- AddDefine ( "ZED_URP" ) ;
33- }
34- else
35- {
36- RemoveDefine ( "ZED_URP" ) ;
37- }
38- if ( pipeline == PipelineType . HDPipeline )
39- {
40- AddDefine ( "ZED_HDRP" ) ;
41- }
42- else
43- {
44- RemoveDefine ( "ZED_HDRP" ) ;
45- }
46- }
47-
48-
49- /// <summary>
50- /// Returns the type of renderpipeline that is currently running
51- /// </summary>
52- /// <returns></returns>
53- static PipelineType GetPipeline ( )
54- {
55- #if UNITY_2019_1_OR_NEWER
56- if ( GraphicsSettings . renderPipelineAsset != null )
57- {
58- // SRP
59- var srpType = GraphicsSettings . renderPipelineAsset . GetType ( ) . ToString ( ) ;
60- if ( srpType . Contains ( "HDRenderPipelineAsset" ) )
61- {
62- return PipelineType . HDPipeline ;
63- }
64- else if ( srpType . Contains ( "UniversalRenderPipelineAsset" ) )
65- {
66- return PipelineType . UniversalPipeline ;
67- }
68- else return PipelineType . Unsupported ;
69- }
70- #elif UNITY_2017_1_OR_NEWER
71- if ( GraphicsSettings . renderPipelineAsset != null ) {
72- // SRP not supported before 2019
73- return PipelineType . Unsupported ;
74- }
75- #endif
76- // no SRP
77- return PipelineType . BuiltInPipeline ;
78- }
79-
80- /// <summary>
81- /// Add a custom define
82- /// </summary>
83- /// <param name="define"></param>
84- /// <param name="buildTargetGroup"></param>
85- public static void AddDefine ( string define )
86- {
87- var definesList = GetDefines ( ) ;
88- if ( ! definesList . Contains ( define ) )
89- {
90- definesList . Add ( define ) ;
91- SetDefines ( definesList ) ;
92- }
93- }
94-
95- /// <summary>
96- /// Remove a custom define
97- /// </summary>
98- /// <param name="_define"></param>
99- /// <param name="_buildTargetGroup"></param>
100- public static void RemoveDefine ( string define )
101- {
102- var definesList = GetDefines ( ) ;
103- if ( definesList . Contains ( define ) )
104- {
105- definesList . Remove ( define ) ;
106- SetDefines ( definesList ) ;
107- }
108- }
109-
110- public static List < string > GetDefines ( )
111- {
112- var target = EditorUserBuildSettings . activeBuildTarget ;
113- var buildTargetGroup = BuildPipeline . GetBuildTargetGroup ( target ) ;
114- var defines = PlayerSettings . GetScriptingDefineSymbolsForGroup ( buildTargetGroup ) ;
115- return defines . Split ( ';' ) . ToList ( ) ;
116- }
117-
118- public static void SetDefines ( List < string > definesList )
119- {
120- var target = EditorUserBuildSettings . activeBuildTarget ;
121- var buildTargetGroup = BuildPipeline . GetBuildTargetGroup ( target ) ;
122- var defines = string . Join ( ";" , definesList . ToArray ( ) ) ;
123- PlayerSettings . SetScriptingDefineSymbolsForGroup ( buildTargetGroup , defines ) ;
124- }
1+ using System . Collections . Generic ;
2+ using System . Linq ;
3+ using UnityEditor ;
4+ using UnityEngine ;
5+ using UnityEngine . Rendering ;
6+
7+ [ InitializeOnLoad ]
8+ public class RenderingPipelineDefines
9+ {
10+ enum PipelineType
11+ {
12+ Unsupported ,
13+ BuiltInPipeline ,
14+ UniversalPipeline ,
15+ HDPipeline
16+ }
17+
18+ static RenderingPipelineDefines ( )
19+ {
20+ UpdateDefines ( ) ;
21+ }
22+
23+ /// <summary>
24+ /// Update the unity pipeline defines for URP
25+ /// </summary>
26+ static void UpdateDefines ( )
27+ {
28+ var pipeline = GetPipeline ( ) ;
29+
30+ if ( pipeline == PipelineType . UniversalPipeline )
31+ {
32+ AddDefine ( "ZED_URP" ) ;
33+ }
34+ else
35+ {
36+ RemoveDefine ( "ZED_URP" ) ;
37+ }
38+ if ( pipeline == PipelineType . HDPipeline )
39+ {
40+ AddDefine ( "ZED_HDRP" ) ;
41+ }
42+ else
43+ {
44+ RemoveDefine ( "ZED_HDRP" ) ;
45+ }
46+ }
47+
48+
49+ /// <summary>
50+ /// Returns the type of renderpipeline that is currently running
51+ /// </summary>
52+ /// <returns></returns>
53+ static PipelineType GetPipeline ( )
54+ {
55+ #if UNITY_2019_1_OR_NEWER
56+ if ( GraphicsSettings . renderPipelineAsset != null )
57+ {
58+ // SRP
59+ var srpType = GraphicsSettings . renderPipelineAsset . GetType ( ) . ToString ( ) ;
60+ if ( srpType . Contains ( "HDRenderPipelineAsset" ) )
61+ {
62+ return PipelineType . HDPipeline ;
63+ }
64+ else if ( srpType . Contains ( "UniversalRenderPipelineAsset" ) )
65+ {
66+ return PipelineType . UniversalPipeline ;
67+ }
68+ else return PipelineType . Unsupported ;
69+ }
70+ #elif UNITY_2017_1_OR_NEWER
71+ if ( GraphicsSettings . renderPipelineAsset != null ) {
72+ // SRP not supported before 2019
73+ return PipelineType . Unsupported ;
74+ }
75+ #endif
76+ // no SRP
77+ return PipelineType . BuiltInPipeline ;
78+ }
79+
80+ /// <summary>
81+ /// Add a custom define
82+ /// </summary>
83+ /// <param name="define"></param>
84+ /// <param name="buildTargetGroup"></param>
85+ public static void AddDefine ( string define )
86+ {
87+ var definesList = GetDefines ( ) ;
88+ if ( ! definesList . Contains ( define ) )
89+ {
90+ Debug . Log ( "ZED added define: " + define ) ;
91+ definesList . Add ( define ) ;
92+ SetDefines ( definesList ) ;
93+ }
94+ }
95+
96+ /// <summary>
97+ /// Remove a custom define
98+ /// </summary>
99+ /// <param name="_define"></param>
100+ /// <param name="_buildTargetGroup"></param>
101+ public static void RemoveDefine ( string define )
102+ {
103+ var definesList = GetDefines ( ) ;
104+ if ( definesList . Contains ( define ) )
105+ {
106+ Debug . Log ( "ZED removed define: " + define ) ;
107+ definesList . Remove ( define ) ;
108+ SetDefines ( definesList ) ;
109+ }
110+ }
111+
112+ public static List < string > GetDefines ( )
113+ {
114+ var target = EditorUserBuildSettings . activeBuildTarget ;
115+ var buildTargetGroup = BuildPipeline . GetBuildTargetGroup ( target ) ;
116+ var defines = PlayerSettings . GetScriptingDefineSymbolsForGroup ( buildTargetGroup ) ;
117+ return defines . Split ( ';' ) . ToList ( ) ;
118+ }
119+
120+ public static void SetDefines ( List < string > definesList )
121+ {
122+ var target = EditorUserBuildSettings . activeBuildTarget ;
123+ var buildTargetGroup = BuildPipeline . GetBuildTargetGroup ( target ) ;
124+ var defines = string . Join ( ";" , definesList . ToArray ( ) ) ;
125+ PlayerSettings . SetScriptingDefineSymbolsForGroup ( buildTargetGroup , defines ) ;
126+ }
125127}
0 commit comments