暫無描述
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.

SGBlackboardRow.cs 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using UnityEngine;
  3. using UnityEngine.Assertions;
  4. using UnityEngine.UIElements;
  5. namespace UnityEditor.ShaderGraph.Drawing
  6. {
  7. class SGBlackboardRow : VisualElement, IDisposable
  8. {
  9. static readonly string k_UxmlTemplatePath = "UXML/Blackboard/SGBlackboardRow";
  10. static readonly string k_StyleSheetPath = "Styles/SGBlackboard";
  11. VisualElement m_Root;
  12. Button m_ExpandButton;
  13. VisualElement m_ItemContainer;
  14. VisualElement m_PropertyViewContainer;
  15. bool m_Expanded = true;
  16. public bool expanded
  17. {
  18. get { return m_Expanded; }
  19. set
  20. {
  21. if (m_Expanded == value)
  22. {
  23. return;
  24. }
  25. m_Expanded = value;
  26. if (m_Expanded)
  27. {
  28. m_Root.Add(m_PropertyViewContainer);
  29. AddToClassList("expanded");
  30. }
  31. else
  32. {
  33. m_Root.Remove(m_PropertyViewContainer);
  34. RemoveFromClassList("expanded");
  35. }
  36. }
  37. }
  38. public SGBlackboardRow(VisualElement item, VisualElement propertyView)
  39. {
  40. var stylesheet = Resources.Load(k_StyleSheetPath) as StyleSheet;
  41. Assert.IsNotNull(stylesheet);
  42. styleSheets.Add(stylesheet);
  43. var uxmlTemplate = Resources.Load(k_UxmlTemplatePath) as VisualTreeAsset;
  44. Assert.IsNotNull(uxmlTemplate);
  45. VisualElement mainContainer = null;
  46. mainContainer = uxmlTemplate.Instantiate();
  47. Assert.IsNotNull(mainContainer);
  48. mainContainer.AddToClassList("mainContainer");
  49. m_Root = mainContainer.Q("root");
  50. m_ItemContainer = mainContainer.Q("itemContainer");
  51. m_PropertyViewContainer = mainContainer.Q("propertyViewContainer");
  52. m_ExpandButton = mainContainer.Q<Button>("expandButton");
  53. m_ExpandButton.clickable.clicked += () => expanded = !expanded;
  54. m_ExpandButton.RemoveFromHierarchy();
  55. Add(mainContainer);
  56. ClearClassList();
  57. AddToClassList("blackboardRow");
  58. name = "SGBlackboardRow";
  59. m_ItemContainer.Add(item);
  60. m_PropertyViewContainer.Add(propertyView);
  61. expanded = false;
  62. }
  63. public void Dispose()
  64. {
  65. RemoveFromHierarchy();
  66. m_ExpandButton.clickable = null;
  67. m_Root = null;
  68. m_ItemContainer = null;
  69. m_PropertyViewContainer = null;
  70. m_ExpandButton = null;
  71. }
  72. }
  73. }