public Node Create(Program parentProgram) { ActionNode node = new ActionNode() .SetAction(Action) .SetSource(Identifier, 0) .SetPosition(new VectorPosition(0, 0)) .SetProgram(parentProgram) as ActionNode; this.CopyTo(node); InputHook[] inputs = new InputHook[Action.Inputs.Count]; OutputHook[] outputs = new OutputHook[Action.Outputs.Count]; for (int i = 0; i < Action.Inputs.Count; i++) { inputs[i] = new InputHook().SetType(Action.Inputs[i].Type).SetNode(node).SetName(Action.Inputs[i].Name).SetProgram(parentProgram) as InputHook; } for (int i = 0; i < Action.Outputs.Count; i++) { outputs[i] = new OutputHook().SetType(Action.Outputs[i].Type).SetNode(node).SetName(Action.Outputs[i].Name).SetProgram(parentProgram) as OutputHook; } node.SetInputs(inputs); node.SetOutputs(outputs); node.InitChildren(); return(node); }
public override bool CanConnect(IHook one, IHook two) { IHook from; IHook to; Hook.GetOrderedIO(one, two, out from, out to); OutputHook output = from as OutputHook; InputHook input = to as InputHook; if (output == null || input == null) { return(false); } return(output.ValueType.IsConvertibleTo(input.ValueType)); }