void exe_vlst(t_action *action) { t_dict *args = action->args; t_vlst *vlst = dict_pop_data(args,"vlst"); t_vlst *caller = dict_pop_data(args,"caller"); vlst_change_data( vlst, caller); action->done = 1; }
void exe_add_brick(t_action *action) { t_context *C = ctx_get(); scene_store(C->scene, 1); t_dict *args = action->args; t_brick *brick = dict_pop_data(args,"brick"); t_block *block=brick->block; t_node *n=add_part_slider_float(C,block,".",NULL); t_brick *b=n->data; b->brick_state.is_versatil=1; lst_lifo( block->bricks); block_brick_set_order( block); block->pos[1] -= b->geom.height; brick_rhizome_setup(b); t_plug *p_in = &b->plug_in; p_in->state.follow_in=1; //p_in->state.can_connect = 0; block->block_state.update_geometry=1; scene_store(C->scene,0); }
void exe_remove_brick(t_action *action) { // remove brick t_dict *args = action->args; t_brick *_brick = dict_pop_data(args,"brick"); t_block *block = _brick->block; int remove_connected = _brick->brick_state.remove_connected; t_plug *plug_intern = &_brick->plug_intern; int *slider = plug_intern->data; t_lst *bricks=block->bricks; t_link *first = bricks->first; t_brick *brick=NULL; if(first) brick = first->data; t_context *C = ctx_get(); scene_store( C->scene, 1); if(brick) { // check if bricks are not connected if(brick_delete(brick,remove_connected)) { // remove link from bricks list_link_remove( bricks, first); brick_rhizome_setup(brick); block->tot_bricks--; block->block_state.update_geometry=1; block_brick_set_order( block); block->pos[1] += brick->geom.height; } else { // re-increment slider (*slider)++; } } scene_store( C->scene, 0); }