public FunctionGraphEditorNodeLayout GetLayout(BaseFuncGraphNode node) { if (layoutMapping == null) { CreateMapping(); } if (layoutMapping.ContainsKey(node.GetType())) { return(layoutMapping[node.GetType()]); } else if (node is VariableNode || node is ConstantNode || node is FixedConstantNode) { return(defaultNoIn); } else if (node is SingularChildNode) { return(defaultSingleIn); } else if (node is DualChildNode) { return(defaultDualIn); } else if (node is VariableMultiChildNode) { return(defaultMultiIn); } else if (node is FixedSizeMultiChildNode && node.PossibleChildrenCount == 3) { return(defaultTripleIn); } return(null); }
public static FunctionGraphEditorNode CreateEditorNode(Vector2 pos, BaseFuncGraphNode n, FunctionGraphEditor editor, FunctionGraphEditorNodeLayout layout) { var attr = n.GetType().GetCustomAttributes(typeof(EditorNodeTypeAttribute), true) as EditorNodeTypeAttribute[]; EditorNodeTypeAttribute.NodeType type = EditorNodeTypeAttribute.NodeType.Default; if (attr.Length > 0) { type = attr[0].Type; } switch (type) { case EditorNodeTypeAttribute.NodeType.Default: return(new FunctionGraphEditorNode(pos, n, editor, layout)); case EditorNodeTypeAttribute.NodeType.FloatField: return(new FunctionGraphEditorNodeConstant(pos, n, editor, layout)); case EditorNodeTypeAttribute.NodeType.Variable: return(new FunctionGraphEditorNodeVariable(pos, n, editor, layout)); default: return(new FunctionGraphEditorNode(pos, n, editor, layout)); } }