예제 #1
0
        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);
        }
예제 #2
0
        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));
        }