ExposedParameterFieldView.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. using UnityEditor.UIElements;
  6. using UnityEditor.Experimental.GraphView;
  7. using UnityEngine.UIElements;
  8. using System.Linq;
  9. namespace GraphProcessor
  10. {
  11. public class ExposedParameterFieldView : BlackboardField
  12. {
  13. protected BaseGraphView graphView;
  14. public ExposedParameter parameter { get; private set; }
  15. public ExposedParameterFieldView(BaseGraphView graphView, ExposedParameter param) : base(null, param.name, param.shortType)
  16. {
  17. this.graphView = graphView;
  18. parameter = param;
  19. this.AddManipulator(new ContextualMenuManipulator(BuildContextualMenu));
  20. this.Q("icon").AddToClassList("parameter-" + param.shortType);
  21. this.Q("icon").visible = true;
  22. (this.Q("textField") as TextField).RegisterValueChangedCallback((e) => {
  23. param.name = e.newValue;
  24. text = e.newValue;
  25. graphView.graph.UpdateExposedParameterName(param, e.newValue);
  26. });
  27. }
  28. void BuildContextualMenu(ContextualMenuPopulateEvent evt)
  29. {
  30. evt.menu.AppendAction("Rename", (a) => OpenTextEditor(), DropdownMenuAction.AlwaysEnabled);
  31. evt.menu.AppendAction("Delete", (a) => graphView.graph.RemoveExposedParameter(parameter), DropdownMenuAction.AlwaysEnabled);
  32. evt.StopPropagation();
  33. }
  34. }
  35. }