CircleRadiansView.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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 GraphProcessor;
  9. [NodeCustomEditor(typeof(CircleRadians))]
  10. public class CircleRadiansView : BaseNodeView
  11. {
  12. CircleRadians node;
  13. VisualElement listContainer;
  14. public override void Enable()
  15. {
  16. node = nodeTarget as CircleRadians;
  17. listContainer = new VisualElement();
  18. // Create your fields using node's variables and add them to the controlsContainer
  19. controlsContainer.Add(listContainer);
  20. onPortConnected += OnPortUpdate;
  21. onPortDisconnected += OnPortUpdate;
  22. UpdateOutputRadians(GetFirstPortViewFromFieldName("outputRadians").connectionCount);
  23. }
  24. void UpdateOutputRadians(int count)
  25. {
  26. node.outputRadians = new List<float>();
  27. listContainer.Clear();
  28. for (int i = 0; i < count; i++)
  29. {
  30. float r = (Mathf.PI * 2 / count) * i;
  31. node.outputRadians.Add(r);
  32. listContainer.Add(new Label(r.ToString("F3")));
  33. }
  34. }
  35. public void OnPortUpdate(PortView port)
  36. {
  37. // There is only one port on this node so it can only be the output
  38. UpdateOutputRadians(port.connectionCount);
  39. }
  40. }