1
1
using UnityEditor ;
2
2
using UnityEngine ;
3
- using System ;
4
- using System . Collections . Generic ;
5
- using System . Reflection ;
3
+ using Coffee . UIEffectInternal ;
6
4
using UnityEditorInternal ;
7
5
8
6
namespace Coffee . UIEffects . Editors
@@ -11,16 +9,14 @@ namespace Coffee.UIEffects.Editors
11
9
public class UIEffectProjectSettingsEditor : Editor
12
10
{
13
11
private ReorderableList _reorderableList ;
14
- private SerializedProperty _fallbackVariantBehaviour ;
15
12
private SerializedProperty _transformSensitivity ;
16
- private Editor _editor ;
17
13
private bool _isInitialized ;
14
+ private ShaderVariantRegistryEditor _shaderVariantRegistryEditor ;
18
15
19
16
private void InitializeIfNeeded ( )
20
17
{
21
18
if ( _isInitialized ) return ;
22
19
23
- _fallbackVariantBehaviour = serializedObject . FindProperty ( "m_FallbackVariantBehaviour" ) ;
24
20
_transformSensitivity = serializedObject . FindProperty ( "m_TransformSensitivity" ) ;
25
21
var runtimePresets = serializedObject . FindProperty ( "m_RuntimePresets" ) ;
26
22
_reorderableList = new ReorderableList ( serializedObject , runtimePresets , true , true , true , true ) ;
@@ -53,19 +49,11 @@ private void InitializeIfNeeded()
53
49
menu . DropDown ( rect ) ;
54
50
} ;
55
51
56
- var collection = serializedObject . FindProperty ( "m_ShaderVariantCollection" ) . objectReferenceValue ;
57
- _editor = CreateEditor ( collection ) ;
58
52
_isInitialized = true ;
59
53
}
60
54
61
55
private void OnDisable ( )
62
56
{
63
- if ( _editor )
64
- {
65
- DestroyImmediate ( _editor ) ;
66
- }
67
-
68
- _editor = null ;
69
57
_isInitialized = false ;
70
58
}
71
59
@@ -78,86 +66,18 @@ public override void OnInspectorGUI()
78
66
EditorGUILayout . PropertyField ( _transformSensitivity ) ;
79
67
_reorderableList . DoLayoutList ( ) ;
80
68
81
- // Editor
82
- EditorGUILayout . PropertyField ( _fallbackVariantBehaviour ) ;
83
- serializedObject . ApplyModifiedProperties ( ) ;
84
-
85
- // Shader
86
- EditorGUILayout . Space ( 20 ) ;
87
- EditorGUILayout . LabelField ( "Shader Variants" , EditorStyles . boldLabel ) ;
88
- EditorGUILayout . Space ( - 12 ) ;
89
- DrawUnregisteredShaderVariants ( UIEffectProjectSettings . instance . m_UnregisteredShaderVariants ) ;
90
- DrawRegisteredShaderVariants ( _editor ) ;
91
- GUILayout . FlexibleSpace ( ) ;
92
- }
93
-
94
- private static void DrawUnregisteredShaderVariants ( List < string > variants )
95
- {
96
- if ( variants . Count == 0 ) return ;
97
-
69
+ // Shader registry
98
70
EditorGUILayout . Space ( ) ;
99
- var array = variants . ToArray ( ) ;
100
- var r = EditorGUILayout . GetControlRect ( false , 20 ) ;
101
- var rLabel = new Rect ( r . x , r . y , r . width - 80 , r . height ) ;
102
- EditorGUI . LabelField ( rLabel , "Registered Shader Variants" ) ;
103
-
104
- var rButtonClear = new Rect ( r . x + r . width - 80 , r . y + 2 , 80 , r . height - 4 ) ;
105
- if ( GUI . Button ( rButtonClear , "Clear All" , EditorStyles . miniButton ) )
71
+ EditorGUILayout . LabelField ( "Shader" , EditorStyles . boldLabel ) ;
72
+ if ( _shaderVariantRegistryEditor == null )
106
73
{
107
- UIEffectProjectSettings . ClearUnregisteredShaderVariants ( ) ;
74
+ var property = serializedObject . FindProperty ( "m_ShaderVariantRegistry" ) ;
75
+ _shaderVariantRegistryEditor = new ShaderVariantRegistryEditor ( property , "(UIEffect)" ) ;
108
76
}
109
77
110
- EditorGUILayout . BeginVertical ( "RL Background" ) ;
111
- for ( var i = 0 ; i < array . Length ; i ++ )
112
- {
113
- var values = array [ i ] . Split ( ';' ) ;
114
- r = EditorGUILayout . GetControlRect ( ) ;
115
- var rShader = new Rect ( r . x , r . y , 150 , r . height ) ;
116
- EditorGUI . ObjectField ( rShader , Shader . Find ( values [ 0 ] ) , typeof ( Shader ) , false ) ;
117
-
118
- var rKeywords = new Rect ( r . x + 150 , r . y , r . width - 150 - 20 , r . height ) ;
119
- EditorGUI . TextField ( rKeywords , values [ 1 ] ) ;
120
-
121
- var rButton = new Rect ( r . x + r . width - 20 + 2 , r . y , 20 , r . height ) ;
122
- if ( GUI . Button ( rButton , EditorGUIUtility . IconContent ( "icons/toolbar plus.png" ) , "iconbutton" ) )
123
- {
124
- UIEffectProjectSettings . RegisterVariant ( array [ i ] ) ;
125
- }
126
- }
127
-
128
- EditorGUILayout . EndVertical ( ) ;
129
- }
130
-
131
- private static void DrawRegisteredShaderVariants ( Editor editor )
132
- {
133
- var collection = editor . target as ShaderVariantCollection ;
134
- if ( collection == null ) return ;
135
-
136
- EditorGUILayout . Space ( ) ;
137
- var r = EditorGUILayout . GetControlRect ( false , 20 ) ;
138
- var rLabel = new Rect ( r . x , r . y , r . width - 80 , r . height ) ;
139
- EditorGUI . LabelField ( rLabel , "Registered Shader Variants" ) ;
140
-
141
- var rButton = new Rect ( r . x + r . width - 80 , r . y + 2 , 80 , r . height - 4 ) ;
142
- if ( GUI . Button ( rButton , "Clear All" , EditorStyles . miniButton ) )
143
- {
144
- collection . Clear ( ) ;
145
- }
146
-
147
- EditorGUILayout . BeginVertical ( "RL Background" ) ;
148
- editor . serializedObject . Update ( ) ;
149
- var shaders = editor . serializedObject . FindProperty ( "m_Shaders" ) ;
150
- for ( var i = 0 ; i < shaders . arraySize ; i ++ )
151
- {
152
- s_MiDrawShaderEntry . Invoke ( editor , new object [ ] { i } ) ;
153
- }
154
-
155
- editor . serializedObject . ApplyModifiedProperties ( ) ;
156
- EditorGUILayout . EndVertical ( ) ;
78
+ _shaderVariantRegistryEditor . Draw ( ) ;
79
+ GUILayout . FlexibleSpace ( ) ;
80
+ serializedObject . ApplyModifiedProperties ( ) ;
157
81
}
158
-
159
- private static readonly MethodInfo s_MiDrawShaderEntry =
160
- Type . GetType ( "UnityEditor.ShaderVariantCollectionInspector, UnityEditor" )
161
- ? . GetMethod ( "DrawShaderEntry" , BindingFlags . NonPublic | BindingFlags . Instance ) ;
162
82
}
163
83
}
0 commit comments