MultiAddNode.cs 912 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using GraphProcessor;
  5. using System.Linq;
  6. [System.Serializable, NodeMenuItem("Custom/MultiAdd")]
  7. public class MultiAddNode : BaseNode
  8. {
  9. [Input]
  10. public IEnumerable< float > inputs = null;
  11. [Output]
  12. public float output;
  13. public override string name => "Add";
  14. protected override void Process()
  15. {
  16. output = 0;
  17. if (inputs == null)
  18. return ;
  19. foreach (float input in inputs)
  20. output += input;
  21. }
  22. [CustomPortBehavior(nameof(inputs))]
  23. IEnumerable< PortData > GetPortsForInputs(List< SerializableEdge > edges)
  24. {
  25. yield return new PortData{ displayName = "In ", displayType = typeof(float), acceptMultipleEdges = true};
  26. }
  27. [CustomPortInput(nameof(inputs), typeof(float), allowCast = true)]
  28. public void GetInputs(List< SerializableEdge > edges)
  29. {
  30. inputs = edges.Select(e => (float)e.passThroughBuffer);
  31. }
  32. }