No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AdvancedDropdown.cs 2.2KB

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