private void SendToDatabase(NodeEntry data) { _actionsDatabase.Add(new ActionEntry(data.TemplateId, data.DisplayName, data.Category) { ProjectId = data is GraphNodeEntry gr ? gr.ProjectId : Guid.Empty, Keywords = data.Keywords });
private void AddDataPins(NodeEntry plugin, MethodInfo method) { bool hasOutParams = false; foreach (var param in method.GetParameters()) { var pin = new PinData(param.Name.Beautify(), param.ParameterType); var pinsToAdd = new List <PinData>() { pin }; // TODO: Add pin factory button for "in/out params" if (param.IsDefined(typeof(ParamArrayAttribute))) { if (param.IsDefined(typeof(GenerateArrayAttribute))) { var minCount = param.GetCustomAttribute <GenerateArrayAttribute>(); pinsToAdd = CreatePinsFromAttribute(minCount, param.ParameterType.GetElementType()); pinsToAdd[0].IsFactory = true; } else { pin = new PinData(string.Empty, param.ParameterType.GetElementType()) { IsFactory = true }; } } if (param.IsOut) { plugin.Output.AddRange(pinsToAdd); hasOutParams = true; } else { plugin.Input.AddRange(pinsToAdd); } } if (method.ReturnType != typeof(void)) { // TODO: Override return name plugin.Output.Add(new PinData(plugin.Output.Count == 0 ? string.Empty : hasOutParams ? "Return" : string.Empty, method.ReturnType)); } }
public NodeEntry Create(Guid id, MethodInfo method) { NodeEntry plugin = null; var attribute = method.GetCustomAttribute <NodeAttribute>(); if (attribute is PureNodeAttribute pure) { plugin = CreatePure(id, pure, method); } else if (attribute is ExecutableNodeAttribute exec) { plugin = CreateExecutable(id, exec, method); AddExecutionPins(plugin, method); } AddDataPins(plugin, method); plugin.Category = attribute.Category; plugin.Keywords = attribute.Keywords; return(plugin); }
private void AddExecutionPins(NodeEntry plugin, MethodInfo method) { plugin.Input.Add(new PinData()); plugin.Output.Add(new PinData()); }
public void Register(NodeEntry data) { _data.Add(data.TemplateId, data); SendToDatabase(data); }