Open
Description
e.g.
using System.Collections.Generic;
using System.Reflection;
using GraphProcessor;
public abstract class EventNode<T> : BaseNode {
[Output("Event values", allowMultiple = true)]
public IEnumerable<object> outputs = null;
static PortData[] _outputPortDatas;
public override void InitializePorts() {
if (_outputPortDatas == null) {
var fields = typeof(T).GetFields(BindingFlags.Public | BindingFlags.Instance);
_outputPortDatas = new PortData[fields.Length];
for (var i = 0; i < fields.Length; i++) {
var field = fields[i];
_outputPortDatas[i] = new PortData {
displayName = field.Name,
displayType = field.FieldType,
identifier = field.Name
};
}
}
base.InitializePorts();
}
[CustomPortBehavior(nameof(outputs))]
protected IEnumerable<PortData> GetOutputPorts(List<SerializableEdge> _) {
foreach (var p in _outputPortDatas) {
yield return p;
}
}
// ...
}
using GraphProcessor;
[System.Serializable, NodeMenuItem("EffortStar/Events/Reload")]
class ReloadEventNode : EventNode<Reload> {
}
This just shows a single output called "Event values".
Problem is here:
Requires a BindingFlags.FlattenHierarchy
to work.
Metadata
Metadata
Assignees
Labels
No labels