void DrawProcessorSettings(Rect position, int processorIndex) { InputBindingProcessor <C, T> processor = processors[processorIndex]; bool used = false; if (Event.current.type == EventType.MouseDown && position.Contains(Event.current.mousePosition)) { m_Selected = processor; used = true; } if (m_Selected == processor) { GUI.DrawTexture(position, EditorGUIUtility.whiteTexture); } processor.OnGUI(position); if (used) { Event.current.Use(); } }
public override void OnGUI(Rect position, IControlDomainSource domainSource) { // Bindings for (int i = 0; i < sources.Count; i++) { InputBinding <C, T> source = sources[i]; position.height = ControlGUIUtility.GetControlHeight(source, Styles.bindingContent); DrawSourceSettings(position, i, domainSource); position.y += position.height + EditorGUIUtility.standardVerticalSpacing; } // Bindings remove and add buttons position.height = EditorGUIUtility.singleLineHeight; Rect buttonPosition = position; buttonPosition.width = Styles.iconToolbarMinus.image.width; if (GUI.Button(buttonPosition, Styles.iconToolbarMinus, GUIStyle.none)) { var selected = m_Selected as InputBinding <C, T>; if (sources.Contains(selected)) { sources.Remove(selected); } } buttonPosition.x += buttonPosition.width; if (GUI.Button(buttonPosition, Styles.iconToolbarPlus, GUIStyle.none)) { var source = new ControlReferenceBinding <C, T>(); sources.Add(source); m_Selected = source; } position.y += position.height + Styles.k_Spacing; position.height = EditorGUIUtility.singleLineHeight; GUI.Label(position, "Processors"); position.y += position.height + Styles.k_Spacing; // Processors for (int i = 0; i < processors.Count; i++) { InputBindingProcessor <C, T> processor = processors[i]; position.height = processor.GetPropertyHeight(); DrawProcessorSettings(position, i); position.y += position.height + EditorGUIUtility.standardVerticalSpacing; } // Processors remove and add buttons position.height = EditorGUIUtility.singleLineHeight; buttonPosition = position; buttonPosition.width = Styles.iconToolbarMinus.image.width; if (GUI.Button(buttonPosition, Styles.iconToolbarMinus, GUIStyle.none)) { var selected = m_Selected as InputBindingProcessor <C, T>; if (selected != null && processors.Contains(selected)) { processors.Remove(selected); } } buttonPosition.x += buttonPosition.width; if (GUI.Button(buttonPosition, Styles.iconToolbarPlus, GUIStyle.none)) { InputBindingProcessor <C, T> .ShowAddProcessorDropdown(buttonPosition, p => processors.Add(p)); } }