public override void RegisterPorts(FlowNode node) { instanceInput = null; var instance = Params.instanceDef; if (instance.paramMode != ParamMode.Undefined) { instanceInput = node.AddValueInput(instance.portName, instance.paramType, instance.portId); } var list = Params.paramDefinitions; if (list == null) { return; } for (var i = 0; i <= list.Count - 1; i++) { var def = list[i]; if (def.paramMode != ParamMode.Out) { continue; } ValueHandlerObject handler = null; var field = def.presentedInfo as FieldInfo; if (field != null) { handler = GetPortHandler(field); } var method = def.presentedInfo as MethodInfo; if (method != null) { handler = GetPortHandler(method); } if (handler != null) { node.AddValueOutput(def.portName, def.paramType, handler, def.portId); } } }
///Creates a generic instance of ValueOutput public static ValueOutput CreateInstance(Type t, FlowNode parent, string name, string ID, ValueHandlerObject getter) { return((ValueOutput)Activator.CreateInstance(typeof(ValueOutput <>).RTMakeGenericType(t), new object[] { parent, name, ID, getter })); }
public ValueOutput AddValueOutput(string name, Type type, ValueHandlerObject getter, string ID = "") { QualifyPortNameAndID(ref name, ref ID, outputPorts); return((ValueOutput)(outputPorts[ID] = ValueOutput.CreateInstance(type, this, name, ID, getter))); }
///Add an object port of unkown runtime type. getter is a function to get the port value from. Returns the new ValueOutput object. ///It is always recommended to use the generic versions to avoid value boxing/unboxing! public ValueOutput AddValueOutput(string name, string ID, Type type, ValueHandlerObject getter) { return(AddValueOutput(name, type, getter, ID)); }