t_node *make_menu_brick_add(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_brick_add","menu"); t_node *menu_num=make_menu_num(); add_brick_submenu(C,menu,menu_num,"number"); t_node *menu_operators=make_menu_operators(); add_brick_submenu(C,menu,menu_operators,"operators"); t_node *menu_time=make_menu_time(); add_brick_submenu(C,menu,menu_time,"time"); t_node *menu_cam=make_menu_cam(); add_brick_submenu(C,menu,menu_cam,"camera"); t_node *menu_mouse=make_submenu_mouse(); add_brick_submenu(C,menu,menu_mouse,"mouse"); t_node *menu_node=make_menu_node(); add_brick_submenu_contextual(C,menu,menu_node,"object",nt_object); return menu; }
t_node *add_block(t_context *C,const char *name) { // Get Set t_set *set = get_current_set(C); // New Block t_node *node_block=block_make(name,"block"); t_block *block = ( t_block *) node_block->data; // Draw Outline block->block_state.draw_outline = 1; // Add to Set set_block_push(set,block); // Set Block Pos if(current_frame != C->app->frame) { current_frame = C->app->frame; block_pos_offset = 0; } float p[2]; ctx_get_mouse_pos(C,p); if( opt_op_use_random) vset3f(block->pos,p[0] * _rnd() ,p[1] * _rnd() ,0); else vset3f(block->pos,p[0],p[1]+block_pos_offset,0); return node_block; }
t_block *block_copy(t_block *block) { t_context *C=ctx_get(); scene_store(C->scene,1); t_node *clone_node = block_make(block->id.name,block->type); t_block *clone_block = clone_node->data; clone_block->block_state.draw_outline = block->block_state.draw_outline; _add_block(C,clone_block); vcp(clone_block->pos,block->pos); t_link *l; t_brick *b; for(l=block->bricks->first;l;l=l->next) { b=l->data; brick_copy(clone_block,b); } scene_store(C->scene,0); return clone_block; }
t_node *make_menu_node(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_brick_node","menu"); t_block *block=menu->data; add_brick_trigger(C,block,"pos x",op_brick_add); add_brick_trigger(C,block,"pos y",op_brick_add); add_brick_trigger(C,block,"pos z",op_brick_add); add_brick_trigger(C,block,"rot x",op_brick_add); add_brick_trigger(C,block,"rot y",op_brick_add); add_brick_trigger(C,block,"rot z",op_brick_add); add_brick_trigger(C,block,"scl x",op_brick_add); add_brick_trigger(C,block,"scl y",op_brick_add); add_brick_trigger(C,block,"scl z",op_brick_add); add_brick_trigger(C,block,"red",op_brick_add); add_brick_trigger(C,block,"green",op_brick_add); add_brick_trigger(C,block,"blue",op_brick_add); add_brick_trigger(C,block,"alpha",op_brick_add); add_brick_trigger(C,block,"mesh",op_brick_add); return menu; }
t_block *block_clone(t_block *block) { t_context *C=ctx_get(); C->scene->store=1; t_node *clone_node=block_make(block->name,block->type); t_block *clone_block=clone_node->data; clone_block->state.draw_outline = block->state.draw_outline; _add_block(C,clone_block); t_link *l; t_brick *b; for(l=block->bricks->first;l;l=l->next) { b=l->data; brick_clone(clone_block,b); } C->scene->store=0; return clone_block; }
t_node *make_menu_brick_object(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_brick_object","menu"); t_block *block=menu->data; add_brick_trigger(C,block,"delete",op_delete); return menu; }
t_node *make_menu_app(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_app","menu"); t_block *block=menu->data; add_brick_switch(C,block,"loop",&C->app->loop); add_brick_switch(C,block,"rec save",&C->event->rec_save); return menu; }
t_node *make_menu_lst(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_lst","menu"); t_block *block=menu->data; add_brick_trigger(C,block,"last?",op_brick_add); add_brick_trigger(C,block,"rewind",op_brick_add); return menu; }
t_node *make_menu_view(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_view","menu"); t_block *block=menu->data; add_brick_slider_int_custom(C,block,"win width",&C->app->window->width,op_window); add_brick_slider_int_custom(C,block,"win height",&C->app->window->height,op_window); add_brick_slider_int(C,block,"vp width",&C->app->window->viewport_width); return menu; }
t_block *add_default_menu(t_context *C, const char *name) { t_node *menu_root = scene_get_node_by_type_name( C->scene, dt_block, "menu_mouse"); t_block *block_root = ( t_block *) menu_root->data; t_node *menu = block_make(name,"menu"); t_block *block = ( t_block *) menu->data; add_brick_submenu(C, block_root, block, name); return block; }
t_node *make_menu_skt(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_sketch","menu"); t_block *block=menu->data; add_brick_slider_int(C,block,"line width",&C->skt->line_width); add_brick_slider_float(C,block,"point size",&C->skt->point_size); add_brick_switch(C,block,"with scale",&C->event->sketch_with_scale); return menu; }
t_node *make_submenu_mouse(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_mouse","menu"); t_block *block=menu->data; add_brick_trigger(C,block,"mouse_x",op_brick_add); add_brick_trigger(C,block,"mouse_y",op_brick_add); add_brick_trigger(C,block,"keyboard",op_brick_add); return menu; }
t_node *make_menu_time(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_time","menu"); t_block *block=menu->data; add_brick_trigger(C,block,"sec",op_brick_add); add_brick_trigger(C,block,"msec",op_brick_add); add_brick_trigger(C,block,"frame",op_brick_add); add_brick_trigger(C,block,"timer",op_brick_add); return menu; }
t_node *make_menu_debug(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_debug","menu"); t_block *block=menu->data; add_brick_switch(C,block,"show terminal",&C->ui->show_term); add_brick_switch(C,block,"debug mouse",&C->event->debug_mouse); add_brick_switch(C,block,"debug keyboard",&C->app->debug_keyboard); add_brick_switch(C,block,"debug select",&C->event->debug_select); return menu; }
t_node *make_menu_cam(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_cam","menu"); t_block *block=menu->data; add_brick_trigger(C,block,"cam_pos_x",op_brick_add); add_brick_trigger(C,block,"cam_pos_y",op_brick_add); add_brick_trigger(C,block,"cam_pos_z",op_brick_add); add_brick_trigger(C,block,"cam_rot_xy",op_brick_add); add_brick_trigger(C,block,"cam_rot_z",op_brick_add); return menu; }
t_node *make_menu_logic(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_logic","menu"); t_block *block=menu->data; add_brick_trigger(C,block,">",op_brick_add); add_brick_trigger(C,block,"<",op_brick_add); add_brick_trigger(C,block,"=",op_brick_add); add_brick_trigger(C,block,"not",op_brick_add); add_brick_trigger(C,block,"and",op_brick_add); return menu; }
t_node *add_menu_process(void) { t_context *C=ctx_get(); t_node *menu_main=scene_node_get(C->scene,"block","menu_set"); t_node *menu=block_make("menu_process","menu"); t_block *block=menu->data; add_brick_switch(C,block,"debug process",&C->event->debug_process); add_brick_slider_float(C,block,"limit",&C->engine->global_limit); add_brick_slider_float(C,block,"freq",&C->engine->global_freq); add_brick_switch(C,block,"limit process",&C->engine->with_global_limit); add_brick_submenu(C,menu_main,menu,"process"); return menu; }
t_node *make_menu_ops(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_logic","menu"); t_block *block=menu->data; add_brick_trigger(C,block,"get",op_brick_add); add_brick_trigger(C,block,"clone",op_brick_add); add_brick_trigger(C,block,"pipe",op_brick_add); add_brick_trigger(C,block,"for",op_brick_add); add_brick_trigger(C,block,"vector",op_brick_add); add_brick_trigger(C,block,"bang",op_brick_add); add_brick_trigger(C,block,"quit",op_brick_add); return menu; }
t_node *make_menu_maths(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_logic","menu"); t_block *block=menu->data; add_brick_trigger(C,block,"cos",op_brick_add); add_brick_trigger(C,block,"sin",op_brick_add); add_brick_trigger(C,block,"x",op_brick_add); add_brick_trigger(C,block,"+",op_brick_add); add_brick_trigger(C,block,"++",op_brick_add); add_brick_trigger(C,block,"neg",op_brick_add); add_brick_trigger(C,block,"mod",op_brick_add); return menu; }
t_node *make_menu_node_add(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_node_add","menu"); t_block *block=menu->data; add_brick_trigger(C,block,"default",op_add_default); add_brick_trigger(C,block,"cube",op_add_cube); add_brick_trigger(C,block,"uv cube",op_add_uv_cube); add_brick_trigger(C,block,"light",op_add_light); add_brick_trigger(C,block,"obj",op_obj_import); add_brick_trigger(C,block,"mn",op_add_mn); add_brick_trigger(C,block,"camera",op_add_camera); return menu; }
t_node *make_menu_camera(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_camera","menu"); t_block *block=menu->data; add_brick_slider_float(C,block,"eye x",&C->camera->eye[0]); add_brick_slider_float(C,block,"eye y",&C->camera->eye[1]); add_brick_slider_float(C,block,"eye z",&C->camera->eye[2]); add_brick_slider_float(C,block,"pos x",&C->camera->pos[0]); add_brick_slider_float(C,block,"pos y",&C->camera->pos[1]); add_brick_slider_float(C,block,"pos z",&C->camera->pos[2]); return menu; }
t_node *make_menu_draw(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_draw","menu"); t_block *block=menu->data; add_brick_switch(C,block,"face",&C->event->with_face); add_brick_switch(C,block,"points",&C->event->with_point); add_brick_switch(C,block,"texture",&C->event->with_texture); add_brick_switch(C,block,"normal",&C->event->with_normal); add_brick_switch(C,block,"light",&C->event->with_light); add_brick_switch(C,block,"depth",&C->event->with_depth); add_brick_switch(C,block,"blend",&C->event->with_blend); add_brick_switch(C,block,"restrict",&C->draw->with_restrict_matrix); add_brick_switch(C,block,"direct",&C->draw->mode_direct); return menu; }
t_node *make_menu_set(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_set","menu"); t_node *menu_view=make_menu_view(); add_brick_submenu(C,menu,menu_view,"view"); t_node *menu_debug=make_menu_debug(); add_brick_submenu(C,menu,menu_debug,"debug"); t_node *menu_ui=make_menu_ui(); add_brick_submenu(C,menu,menu_ui,"ui"); t_node *menu_app=make_menu_app(); add_brick_submenu(C,menu,menu_app,"app"); return menu; }
t_node *make_menu_ui(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_ui","menu"); t_block *block=menu->data; add_brick_switch(C,block,"update links",&C->ui->update_links); add_brick_switch(C,block,"fixed menu",&C->ui->fixed_menu); add_brick_switch(C,block,"flow brick",&C->ui->flow_brick); add_brick_switch(C,block,"selection",&C->ui->object_selection); add_brick_switch(C,block,"bitmap font",&C->ui->use_bitmap_font); add_brick_switch(C,block,"mouse mode",&C->ui->mouse_mode); add_brick_switch(C,block,"show states",&C->ui->show_states); add_brick_switch(C,block,"show step",&C->ui->show_step); add_brick_switch(C,block,"show brick step",&C->ui->show_brick_step); add_brick_switch(C,block,"video",&C->event->video); return menu; }
t_node *make_menu_operators(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_operators","menu"); t_node *menu_lst=make_menu_lst(); add_brick_submenu(C,menu,menu_lst,"lst"); t_node *menu_logic=make_menu_logic(); add_brick_submenu(C,menu,menu_logic,"logic"); t_node *menu_maths=make_menu_maths(); add_brick_submenu(C,menu,menu_maths,"maths"); t_node *menu_ops=make_menu_ops(); add_brick_submenu(C,menu,menu_ops,"ops"); return menu; }
t_node *make_menu_num(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_num","menu"); t_block *block=menu->data; add_brick_trigger(C,block,"int",op_brick_add); add_brick_trigger(C,block,"float",op_brick_add); add_brick_trigger(C,block,"100",op_brick_add); add_brick_trigger(C,block,"10",op_brick_add); add_brick_trigger(C,block,".001",op_brick_add); add_brick_trigger(C,block,".01",op_brick_add); add_brick_trigger(C,block,".1",op_brick_add); add_brick_trigger(C,block,"rnd",op_brick_add); add_brick_trigger(C,block,"switch",op_brick_add); add_brick_trigger(C,block,"const",op_brick_add); return menu; }
void make_menu_mouse(void) { t_context *C=ctx_get(); t_node *menu=block_make("menu_mouse","menu"); t_node *add = make_menu_node_add(); t_node *brick = make_menu_brick_add(); t_node *set = make_menu_set(); t_node *skt = make_menu_skt(); t_node *draw = make_menu_draw(); t_node *cam = make_menu_camera(); add_brick_submenu(C,menu,add,"add"); add_brick_submenu(C,menu,brick,"brick"); add_brick_submenu(C,menu,set,"set"); add_brick_submenu(C,menu,skt,"sketch"); add_brick_submenu(C,menu,draw,"draw"); add_brick_submenu(C,menu,cam,"camera"); }
void make_menu_object(void) { t_context *C = ctx_get(); t_node *menu=block_make("menu_node","menu"); // store menu t_block *b=menu->data; menu_node=b; t_node *add = make_menu_brick_add(); t_node *draw = scene_node_get(C->scene,"block","menu_draw"); t_node *sketch = scene_node_get(C->scene,"block","menu_sketch"); t_node *set = scene_node_get(C->scene,"block","menu_set"); t_node *menu_object=make_menu_brick_object(); add_brick_submenu(C,menu,add,"bricks"); add_brick_submenu(C,menu,menu_object,"object"); add_brick_submenu(C,menu,draw,"draw"); add_brick_submenu(C,menu,sketch,"sketch"); add_brick_submenu(C,menu,set,"set"); }