void *op_brick_add(t_brick *brick) { t_context *C = ctx_get(); t_node *node = NULL; t_block *block; t_set *set; // store scene_store(C->scene,1); char *name=brick->id.name; if(is(name,"frame")) node = add_slider_int(C,"frame",&C->app->frame); else if(is(name,"timer")) node = add_slider_float(C,"timer",&C->app->timer); else if(is(name,"timer low")) node = add_slider_float(C,"timer low",&C->app->timer_add_low); else if(is(name,"=")) node = add_operator_double(C,"="); else if(is(name,">")) node = add_operator_double(C,">"); else if(is(name,"<")) node = add_operator_double(C,"<"); else if(is(name,"if")) node = add_if(C); else if(is(name,"mod")) node = add_operator_double(C,"mod"); else if(is(name,"x")) node = add_maths(C,"x"); else if(is(name,"+")) node = add_maths(C,"+"); else if(is(name,"++")) node = add_plusplus(C); else if(is(name,"switch")) node = add_switch(C,"switch",NULL,NULL); else if(is(name,"clone")) node = add_clone(C); else if(is(name,"pipe")) node = add_pipe(C); else if(is(name,"sec")) node = add_slider_int(C,"sec",&C->app->clock->sec); else if(is(name,"min")) node = add_slider_int(C,"min",&C->app->clock->min); else if(is(name,"int")) node = add_slider_int(C,"int",NULL); else if(is(name,"float")) node = add_slider_float(C,"float",NULL); else if(is(name,"10")) node = add_multiplier(C,"10"); else if(is(name,"100")) node = add_multiplier(C,"100"); else if(is(name,".1")) node = add_multiplier(C,".1"); else if(is(name,".01")) node = add_multiplier(C,".01"); else if(is(name,".001")) node = add_multiplier(C,".001"); else if(is(name,"msec")) node = add_slider_int(C,"msec",&C->app->clock->msec); else if(is(name,"cos")) node = add_operator_single(C,"cos",op_cos); else if(is(name,"sin")) node = add_operator_single(C,"sin",op_sin); else if(is(name,"cam_eye_x")) node = add_slider_camera(C,"eye x"); else if(is(name,"cam_eye_y")) node = add_slider_camera(C,"eye y"); else if(is(name,"cam_eye_z")) node = add_slider_camera(C,"eye z"); else if(is(name,"cam_pos_x")) node = add_slider_camera(C,"pos x"); else if(is(name,"cam_pos_y")) node = add_slider_camera(C,"pos y"); else if(is(name,"cam_pos_z")) node = add_slider_camera(C,"pos z"); else if(is(name,"cam_rot_xy")) node = add_slider_float_custom(C,"cam rot xy",op_camera_rotate_xy); else if(is(name,"cam_rot_z")) node = add_slider_float_custom(C,"cam rot z",op_camera_rotate_z); else if(is(name,"pos x")) node = add_slider_object(C,"pos x"); else if(is(name,"pos y")) node = add_slider_object(C,"pos y"); else if(is(name,"pos z")) node = add_slider_object(C,"pos z"); else if(is(name,"rot x")) node = add_slider_object(C,"rot x"); else if(is(name,"rot y")) node = add_slider_object(C,"rot y"); else if(is(name,"rot z")) node = add_slider_object(C,"rot z"); else if(is(name,"scl x")) node = add_slider_object(C,"scl x"); else if(is(name,"scl y")) node = add_slider_object(C,"scl y"); else if(is(name,"scl z")) node = add_slider_object(C,"scl z"); else if(is(name,"red")) node = add_slider_object(C,"red"); else if(is(name,"green")) node = add_slider_object(C,"green"); else if(is(name,"blue")) node = add_slider_object(C,"blue"); else if(is(name,"color")) node = add_slider_object(C,"color"); else if(is(name,"faces")) node = add_slider_object(C,"faces"); else if(is(name,"alpha")) node = add_slider_object(C,"alpha"); else if(is(name,"label")) node = add_label(C,"label"); else if(is(name,"get")) node = add_get(C); else if(is(name,"rewind")) node = add_trigger_always(C,"rewind",op_rewind); else if(is(name,"not")) node = add_slider_int_custom(C,"not",NULL,op_not); else if(is(name,"mouse_x")) node = add_slider_int(C,"mouse x",&C->app->mouse->x); else if(is(name,"mouse_y")) node = add_slider_int(C,"mouse y",&C->app->mouse->y); else if(is(name,"keyboard")) node = add_slider_char(C,"keyboard",&C->app->keyboard->key_pressed); else if(is(name,"rnd")) node = add_slider_int_custom(C,"rnd",NULL,op_rnd); else if(is(name,"neg")) node = add_slider_int_custom(C,"neg",NULL,op_neg); else if(is(name,"abs")) node = add_slider_int_custom( C, "abs", NULL, op_abs); else if(is(name,"last?")) node = add_switch(C,"last?",NULL,op_is_last); else if(is(name,"for")) node = add_for(C); else if(is(name,"vector 3d")) node = add_vector_3d(C); else if(is(name,"vector 2d")) node = add_vector_2d(C); else if(is(name,"bang")) node = add_slider_int_custom(C,"bang",NULL,op_bang); else if(is(name,"quit")) node = add_trigger_always(C,"quit",op_do_quit); else if(is(name,"const")) node = add_const(C); else if(is(name,"and")) node = add_maths(C,"and"); else if(is(name,"stack")) node = add_stack(C); else if(is(name,"mesh")) node = add_slider_object(C,"mesh"); else if(is(name,"vertex")) node = add_brick_mesh(C,"vertex"); else if(is(name,"edges")) node = add_brick_mesh(C,"edges"); else if(is(name,"case")) node = add_case(C,"switch"); // Store scene_store(C->scene,0); term_log("+ brick"); // Switch Desk if(!C->ui->show_sets) show_sets(C); if( node) { block = node->data; set = block->set; set_setup( set); } return NULL; }
void vlst_show(t_vlst *vlst) { t_context *C = ctx_get(); if(vlst) { int i; int count=vlst->count; int length=vlst->length; void *dat=vlst->data; if(C->event->debug_terminal) printf("[VLST] type:%s name:%s count:%d length:%d\n", data_name_get(vlst->type), vlst->id.name, count, length); else printf("C->event->debug_terminal must be on !\n"); if(C->event->debug_console) term_log("[VLST] type:%s name:%s count:%d length:%d", data_name_get(vlst->type), vlst->id.name, count, length); if( term) term_l( term, "[VLST] type:%s name:%s count:%d length:%d", data_name_get(vlst->type), vlst->id.name, count, length); if(dat) { if(vlst->type == dt_float) { if(vlst->length == 3) { float *d=(float *)dat; for(i=0;i<count;i++) { if(C->event->debug_terminal) printf("[%d] %f %f %f\n",i,d[0],d[1],d[2]); if(C->event->debug_console) term_log("[%d] %f %f %f",i,d[0],d[1],d[2]); if( term) term_l( term, "[%d] %f %f %f",i,d[0],d[1],d[2]); d+=length; } } else if(vlst->length == 4) { float *d=(float *)dat; for(i=0;i<count;i++) { if(C->event->debug_terminal) printf("[%d] %f %f %f %f\n",i,d[0],d[1],d[2],d[3]); if(C->event->debug_console) term_log("[%d] %f %f %f %f",i,d[0],d[1],d[2],d[3]); if( term) term_l( term, "[%d] %f %f %f %f",i,d[0],d[1],d[2],d[3]); d+=length; } } } else if(vlst->type == dt_uint) { if(vlst->length == 2) { unsigned int *d=(unsigned int *)dat; for(i=0;i<count;i++) { if(C->event->debug_terminal) printf("[%d] %u %u \n",i,d[0],d[1]); if(C->event->debug_console) term_log("[%d] %u %u",i,d[0],d[1]); if( term) term_l( term, "[%d] %u %u",i,d[0],d[1]); d+=length; } } else if(vlst->length == 3) { unsigned int *d=(unsigned int *)dat; for(i=0;i<count;i++) { if(C->event->debug_terminal) printf("[%d] %u %u %u \n",i,d[0],d[1],d[2]); if(C->event->debug_console) term_log("[%d] %u %u %u",i,d[0],d[1],d[2]); if( term) term_l( term, "[%d] %u %u %u",i,d[0],d[1],d[2]); d+=length; } } else if(vlst->length == 4) { unsigned int *d=(unsigned int *)dat; for(i=0;i<count;i++) { if(C->event->debug_terminal) printf("[%d] %u %u %u %u\n",i,d[0],d[1],d[2],d[3]); if(C->event->debug_console) term_log("[%d] %u %u %u %u",i,d[0],d[1],d[2],d[3]); if( term) term_l( term, "[%d] %u %u %u %u",i,d[0],d[1],d[2],d[3]); d+=length; } } } else if(vlst->type == dt_int) { if(vlst->length == 4) { int *d=(int *)dat; for(i=0;i<count;i++) { if(C->event->debug_terminal) printf("[%d] %d %d %d %d\n",i,d[0],d[1],d[2],d[3]); if(C->event->debug_console) term_log("[%d] %d %d %d %d",i,d[0],d[1],d[2],d[3]); if( term) term_l( term, "[%d] %d %d %d %d",i,d[0],d[1],d[2],d[3]); d+=length; } } else if(vlst->length == 2) { int *d=(int *)dat; for(i=0;i<count;i++) { if(C->event->debug_terminal) printf("[%d] %d %d \n",i,d[0],d[1]); if(C->event->debug_console) term_log("[%d] %d %d",i,d[0],d[1]); if( term) term_l( term, "[%d] %d %d",i,d[0],d[1]); d+=length; } } } } else { printf("NO DATA\n"); } } }
void __cls_plug_flow_operator_for(t_plug_mode mode,t_plug *plug,t_plug *plug_src) { t_context *C =ctx_get(); t_plug *plug_in = plug->src; t_brick *brick = plug->brick; // get bricks t_block *block = brick->block; t_brick *brick_indice = block_brick_get(block,"indice"); t_brick *brick_vector = block_brick_get(block,"vector"); t_plug *plug_indice = &brick_indice->plug_intern; t_plug *plug_vector = &brick_vector->plug_intern; t_plug *plug_vector_in = &brick_vector->plug_in; int *data_indice = plug_indice->data; t_vector *vector = plug_vector->data; // IN if(mode == mode_in) { // reset vector vector->data = NULL; // if for connected if(plug_in->is_connected ) { // get src t_plug *src_plug = plug_get_src(plug); t_data_type src_type = src_plug->data_type; t_vlst *vlst=NULL; switch(src_type) { // + VLST case dt_vlst: // SET VLST vlst = src_plug->data; // SET vector if(vlst) { vector->data = vlst->data; vector->type = vlst->data_type; vector->length = vlst->length; } break; default: plug_warning(plug,src_plug); break; } // SET VECTOR if(plug_vector_in->is_connected) { if(vlst) { // set vector, open for fisrt loop //if(!plug->is_eval) if(!for_init) //if(1==2) { if(C->ui->show_step) term_log(":FOR loop (INIT) %d",brick->counter); plug->is_eval = 1; for_init = 1; // get pointer float *ptr = vlst->data; // set pointer vector->data = ptr; // set indice *data_indice=0; t_plug *plug_vector_src = plug_vector_in->src; t_brick *brick_vector_src = plug_vector_src->brick; brick_vector_src->cls->trigger(brick_vector_src); t_lst *BRICKS = ctx_links_lst_get(); lst_add(BRICKS,brick,"for"); } else { if(brick->counter < vlst->count) { if(C->ui->show_step) term_log(":FOR loop %d",brick->counter); // get pointer float *ptr = vlst->data; // set pointer vector->data = ptr + (vlst->length * brick->counter); // set indice *data_indice=brick->counter; // get branch (all bricks) t_lst *lst=lst_new("lst"); block_branch_get(0,lst,block); // reset states ctx_links_reset(C,lst); // add to loop t_lst *BRICKS = ctx_links_lst_get(); t_link *l; t_brick *b; for(l=lst->first;l;l=l->next) { b = l->data; lst_add(BRICKS,l->data,b->name); } // free lst_free(lst); // counter ++ brick->counter++; } else { //XXX vector->data = NULL; // reset counter brick->counter = 0; for_init=0; } } } } else { *data_indice = 0; } } } }