Пример #1
0
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;
}
Пример #2
0
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);
    }
}