struct bNodeSocket *node_add_input_from_template(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocketTemplate *stemp) { bNodeSocket *sock; switch (stemp->type) { case SOCK_INT: sock = nodeAddInputInt(ntree, node, stemp->name, stemp->subtype, (int)stemp->val1, (int)stemp->min, (int)stemp->max); break; case SOCK_FLOAT: sock = nodeAddInputFloat(ntree, node, stemp->name, stemp->subtype, stemp->val1, stemp->min, stemp->max); break; case SOCK_BOOLEAN: sock = nodeAddInputBoolean(ntree, node, stemp->name, (char)stemp->val1); break; case SOCK_VECTOR: sock = nodeAddInputVector(ntree, node, stemp->name, stemp->subtype, stemp->val1, stemp->val2, stemp->val3, stemp->min, stemp->max); break; case SOCK_RGBA: sock = nodeAddInputRGBA(ntree, node, stemp->name, stemp->val1, stemp->val2, stemp->val3, stemp->val4); break; case SOCK_MESH: sock = nodeAddInputMesh(ntree, node, stemp->name); break; default: sock = nodeAddSocket(ntree, node, SOCK_IN, stemp->name, stemp->type); } return sock; }
void node_forloop_init(bNodeTree *ntree, bNode *node, bNodeTemplate *ntemp) { /* bNodeSocket *sock; */ /* UNUSED */ node->id = (ID*)ntemp->ngroup; /* sock = */ nodeAddInputFloat(ntree, node, "Iterations", PROP_UNSIGNED, 1, 0, 10000); /* NB: group socket input/output roles are inverted internally! * Group "inputs" work as outputs in links and vice versa. */ if (ntemp->ngroup) { bNodeSocket *gsock; for (gsock=ntemp->ngroup->inputs.first; gsock; gsock=gsock->next) node_group_add_extern_socket(ntree, &node->inputs, SOCK_IN, gsock); for (gsock=ntemp->ngroup->outputs.first; gsock; gsock=gsock->next) node_group_add_extern_socket(ntree, &node->outputs, SOCK_OUT, gsock); } }