5
5
using UnityEditor ;
6
6
using UnityEngine ;
7
7
using UnityEngine . InputSystem . Utilities ;
8
+ using UnityEngine . UI ;
8
9
9
10
namespace UnityEngine . InputSystem . Samples . RebindUI
10
11
{
12
+ /// <summary>
13
+ /// Allows persisting a parameter override associated with a binding.
14
+ /// </summary>
11
15
[ CustomEditor ( typeof ( RebindActionParameterUI ) ) ]
12
16
public class RebindActionParameterUIEditor : UnityEditor . Editor
13
17
{
14
18
protected void OnEnable ( )
15
19
{
16
20
m_Binding = new BindingUI ( serializedObject ) ;
17
- m_ParameterNameProperty = serializedObject . FindProperty ( "m_ParameterName" ) ;
21
+ m_DefaultValueProperty = serializedObject . FindProperty ( "m_DefaultValue" ) ;
22
+ m_PreferenceKeyProperty = serializedObject . FindProperty ( "m_PreferenceKey" ) ;
23
+ m_SliderProperty = serializedObject . FindProperty ( "m_Slider" ) ;
18
24
19
25
Refresh ( ) ;
20
26
}
@@ -23,97 +29,39 @@ public override void OnInspectorGUI()
23
29
{
24
30
EditorGUI . BeginChangeCheck ( ) ;
25
31
26
- //EditorGUILayout.PropertyField(m_ActionProperty);
27
-
28
32
// Binding section.
29
33
m_Binding . Draw ( ) ;
30
34
31
- // Parameter section.
32
- var newSelectedParameter = EditorGUILayout . Popup ( m_ParameterLabel , m_SelectedParameterOption , m_Parameters ) ;
33
- if ( newSelectedParameter != m_SelectedParameterOption )
35
+ // UI section
36
+ EditorGUILayout . LabelField ( "UI" ) ;
37
+ using ( new EditorGUI . IndentLevelScope ( ) )
34
38
{
35
- m_SelectedParameterOption = newSelectedParameter ;
39
+ EditorGUILayout . ObjectField ( m_SliderProperty ) ;
36
40
}
37
41
38
- if ( EditorGUI . EndChangeCheck ( ) )
42
+ // Parameter section.
43
+ EditorGUILayout . LabelField ( "Parameter" ) ;
44
+ using ( new EditorGUI . IndentLevelScope ( ) )
39
45
{
40
- serializedObject . ApplyModifiedProperties ( ) ;
41
- Refresh ( ) ;
42
- }
43
- }
44
-
45
- private void Refresh ( )
46
- {
47
- if ( ! m_Binding . Refresh ( ) )
48
- return ;
49
-
50
- RefreshItems ( ) ;
51
- }
52
-
53
- private void RefreshItems ( )
54
- {
55
- var action = m_Binding . action ;
46
+ var key = EditorGUILayout . TextField ( "Preference Key" , m_PreferenceKeyProperty . stringValue ) ;
47
+ if ( key != m_PreferenceKeyProperty . stringValue )
48
+ m_PreferenceKeyProperty . stringValue = key ;
56
49
57
- var parameters = new List < GUIContent > ( ) ;
58
- var parameterValues = new List < ParameterValue > ( ) ;
50
+ var defaultValue = EditorGUILayout . FloatField ( "Default Value" , m_DefaultValueProperty . floatValue ) ;
51
+ if ( ! Mathf . Approximately ( defaultValue , m_DefaultValueProperty . floatValue ) )
52
+ m_DefaultValueProperty . floatValue = defaultValue ;
59
53
60
- // Add action processors
61
- var actionItems = NameAndParameters . ParseMultiple ( action . processors ) ;
62
- foreach ( var item in actionItems )
63
- {
64
- // TODO FIX
65
- //parameters.Add(new GUIContent(item.name + " (Action)"));
66
- //parameterValues.Add(item);
67
- }
68
-
69
- // Add binding processors
70
- var bindings = action . bindings ;
71
- for ( var i = 0 ; i < bindings . Count ; i ++ )
72
- {
73
- var bindingItems = NameAndParameters . ParseMultiple ( bindings [ i ] . processors ) ;
74
- foreach ( var item in bindingItems )
54
+ if ( EditorGUI . EndChangeCheck ( ) )
75
55
{
76
- //parameters.Add(new GUIContent(item.name + " (Binding)"));
77
- //parameterValues.Add(item.name);
78
-
79
- // Only add parameters from the active binding
80
- if ( m_Binding . bindingIndex != i )
81
- continue ;
82
-
83
- var uniformParameterType = true ;
84
- var previousType = TypeCode . Empty ;
85
- var processorParameters = item . parameters ;
86
- foreach ( var parameter in processorParameters )
87
- {
88
- if ( uniformParameterType && parameter . type != previousType && previousType != TypeCode . Empty )
89
- uniformParameterType = false ;
90
- previousType = parameter . type ;
91
-
92
- // And option for individual parameter
93
- var processorParameterName = item . name + "." + parameter . name ;
94
- parameters . Add ( new GUIContent ( processorParameterName ) ) ;
95
- parameterValues . Add ( new ParameterValue
96
- {
97
- bindingId = m_Binding . bindingId ,
98
- name = parameter . name ,
99
- } ) ;
100
- }
101
-
102
- // Add parameter option for all/uniform parameter modification if all parameters are of
103
- // the same type.
104
- if ( ! uniformParameterType )
105
- continue ;
106
- parameters . Add ( new GUIContent ( item . name + " (Uniform)" ) ) ;
107
- parameterValues . Add ( new ParameterValue
108
- {
109
- bindingId = m_Binding . bindingId ,
110
- name = null
111
- } ) ;
56
+ serializedObject . ApplyModifiedProperties ( ) ;
57
+ Refresh ( ) ;
112
58
}
113
59
}
60
+ }
114
61
115
- m_Parameters = parameters . ToArray ( ) ;
116
- m_ParameterValues = parameterValues . ToArray ( ) ;
62
+ private void Refresh ( )
63
+ {
64
+ m_Binding . Refresh ( ) ;
117
65
}
118
66
119
67
private struct ParameterValue
@@ -122,12 +70,11 @@ private struct ParameterValue
122
70
public string name ;
123
71
}
124
72
125
- private SerializedProperty m_ParameterNameProperty ;
73
+ private SerializedProperty m_PreferenceKeyProperty ;
74
+ private SerializedProperty m_DefaultValueProperty ;
75
+ private SerializedProperty m_SliderProperty ;
76
+
126
77
private BindingUI m_Binding ;
127
- private GUIContent [ ] m_Parameters ;
128
- private ParameterValue [ ] m_ParameterValues ;
129
- private int m_SelectedParameterOption ;
130
- private readonly GUIContent m_ParameterLabel = new GUIContent ( "Processor Parameter" ) ;
131
78
}
132
79
}
133
80
0 commit comments