A game about forced loneliness, made by TACStudios
1#if UNITY_EDITOR 2using System.Collections.Generic; 3 4namespace UnityEngine.InputSystem.Editor 5{ 6 internal abstract class AdvancedDropdown 7 { 8 protected Vector2 minimumSize { get; set; } 9 protected Vector2 maximumSize { get; set; } 10 11 internal AdvancedDropdownWindow m_WindowInstance; 12 internal AdvancedDropdownState m_State; 13 internal AdvancedDropdownDataSource m_DataSource; 14 internal AdvancedDropdownGUI m_Gui; 15 16 public AdvancedDropdown(AdvancedDropdownState state) 17 { 18 m_State = state; 19 } 20 21 public void Show(Rect rect) 22 { 23 if (m_WindowInstance != null) 24 { 25 m_WindowInstance.Close(); 26 m_WindowInstance = null; 27 } 28 if (m_DataSource == null) 29 { 30 m_DataSource = new CallbackDataSource(BuildRoot, BuildCustomSearch); 31 } 32 if (m_Gui == null) 33 { 34 m_Gui = new AdvancedDropdownGUI(); 35 } 36 37 m_WindowInstance = ScriptableObject.CreateInstance<AdvancedDropdownWindow>(); 38 if (minimumSize != Vector2.zero) 39 m_WindowInstance.minSize = minimumSize; 40 if (maximumSize != Vector2.zero) 41 m_WindowInstance.maxSize = maximumSize; 42 m_WindowInstance.state = m_State; 43 m_WindowInstance.dataSource = m_DataSource; 44 m_WindowInstance.gui = m_Gui; 45 m_WindowInstance.windowClosed += 46 w => { ItemSelected(w.GetSelectedItem()); }; 47 m_WindowInstance.windowDestroyed += OnDestroy; 48 m_WindowInstance.Init(rect); 49 } 50 51 public void Reload() 52 { 53 m_WindowInstance?.ReloadData(); 54 } 55 56 public void Repaint() 57 { 58 m_WindowInstance?.Repaint(); 59 } 60 61 protected abstract AdvancedDropdownItem BuildRoot(); 62 63 protected virtual AdvancedDropdownItem BuildCustomSearch(string searchString, 64 IEnumerable<AdvancedDropdownItem> elements) 65 { 66 return null; 67 } 68 69 protected virtual void ItemSelected(AdvancedDropdownItem item) 70 { 71 } 72 73 protected virtual void OnDestroy() 74 { 75 } 76 } 77} 78#endif