t_node *add_brick_geo_array( t_context *C, const char *name , void *data) { t_geo_array *array = (t_geo_array *) data; // NEW BLOCK t_node *node_block = add_block(C,name); t_block *block = ( t_block *) node_block->data; block->block_state.draw_outline = 1; // VECTOR C->ui->add_bricks = 0; add_part_vector( C, block, "vector"); C->ui->add_bricks = 1; // TARGET t_node *node_target = add_part_slider_float( C, block, "target", NULL); t_brick *brick_target = ( t_brick *) node_target->data; brick_target->brick_state.is_versatil = 1; // COUNT add_part_slider_int( C, block, "count", &array->count); scene_add_ref( C->scene, "struct_ref", "geo_array", "count", &array->count, array); // GEO ARRAY add_part_geo( C, block, "array", data, dt_geo_array); return node_block; }
void viewport_add_controls( t_viewport *viewport) { t_context *C = ctx_get(); scene_add_ref(C->scene,"struct_ref","viewport","width",&viewport->width,viewport); scene_add_ref(C->scene,"struct_ref","viewport","height",&viewport->height,viewport); scene_add_ref(C->scene,"struct_ref","viewport","x",&viewport->x,viewport); scene_add_ref(C->scene,"struct_ref","viewport","y",&viewport->y,viewport); scene_add_ref(C->scene,"struct_ref","viewport","fullscreen",&viewport->fullscreen,viewport); scene_add_ref(C->scene,"struct_ref","viewport","show_outline",&viewport->show_outline,viewport); t_block *block = add_block_block( C, "viewport_controls"); viewport->controls = block; set_draw_plug = 0; block->pos[0] = 0; block->pos[1] = 1; add_brick_slider_int( C, block, "width", &viewport->width,NULL); add_brick_slider_int( C, block, "height", &viewport->height,NULL); add_brick_slider_int( C, block, "x", &viewport->x,NULL); add_brick_slider_int( C, block, "y", &viewport->y,NULL); add_brick_switch( C, block, "fullscreen", &viewport->fullscreen, NULL); add_brick_switch( C, block, "outline", &viewport->show_outline, NULL); viewport_add_trigger( C, viewport, "A4", op_viewport_set_dimensions); viewport_add_trigger( C, viewport, "center", op_viewport_center); viewport_add_trigger( C, viewport, "full height", op_viewport_full_height); set_draw_plug = 1; }
t_node *add_part_vlst(t_context *C,t_block *block,t_data_type type,const char *name,void *ptr) { t_node *node; node=add_brick_vlst(C,block,name,type,ptr); t_vlst *vlst = ( t_vlst *) ptr; scene_add_ref(C->scene,"struct_ref","vlst","count",&vlst->count_new,vlst); t_node *node_count=add_part_slider_int_positive(C,block,"count:",&vlst->count_new); t_brick *brick_count = ( t_brick *) node_count->data; brick_count->brick_state.use_loops = 0; brick_count->plug_intern.data_memory = NULL; brick_count->exe=op_set_vlst; brick_count->brick_state.singular=1; brick_count->brick_state.use_hold = 1; t_brick *brick = ( t_brick *) node->data; brick->brick_state.draw_outline=0; return node; }
t_node *add_slider_camera(t_context *C,const char *name) { t_camera *camera = op_camera_get_current( C); t_node *node = NULL; if(camera) { if(is(name,"pos x")) { scene_add_ref(C->scene,"struct_ref","camera","pos_x",&camera->pos[0],camera); node = add_slider_float(C,"cam pos x",&camera->pos[0]); } else if(is(name,"pos y")) { scene_add_ref(C->scene,"struct_ref","camera","pos_y",&camera->pos[1],camera); node = add_slider_float(C,"cam pos y",&camera->pos[1]); } else if(is(name,"pos z")) { scene_add_ref(C->scene,"struct_ref","camera","pos_z",&camera->pos[2],camera); node = add_slider_float(C,"cam pos z",&camera->pos[2]); } else if(is(name,"eye x")) { scene_add_ref(C->scene,"struct_ref","camera","eye_x",&camera->eye[1],camera); node = add_slider_float(C,"cam eye x",&camera->eye[1]); } else if(is(name,"eye y")) { scene_add_ref(C->scene,"struct_ref","camera","eye_y",&camera->eye[2],camera); node = add_slider_float(C,"cam eye y",&camera->eye[2]); } else if(is(name,"eye z")) { scene_add_ref(C->scene,"struct_ref","camera","eye_z",&camera->eye[3],camera); node = add_slider_float(C,"cam eye z",&camera->eye[3]); } } return node; }
void add_slider_ref(t_context *C,t_object *object,const char *name) { t_mesh *mesh=NULL; t_material *mat=NULL; if(object->mesh) mesh=object->mesh; if(mesh) { if(mesh->material) mat=mesh->material; } if(is(name,"pos x")) scene_add_ref(C->scene,"struct_ref","object","loc_x",&object->loc[0],object); else if(is(name,"pos y")) scene_add_ref(C->scene,"struct_ref","object","loc_y",&object->loc[1],object); else if(is(name,"pos z")) scene_add_ref(C->scene,"struct_ref","object","loc_z",&object->loc[2],object); else if(is(name,"rot x")) scene_add_ref(C->scene,"struct_ref","object","rot_x",&object->rot[0],object); else if(is(name,"rot y")) scene_add_ref(C->scene,"struct_ref","object","rot_y",&object->rot[1],object); else if(is(name,"rot z")) scene_add_ref(C->scene,"struct_ref","object","rot_z",&object->rot[2],object); else if(is(name,"scl x")) scene_add_ref(C->scene,"struct_ref","object","scl_x",&object->size[0],object); else if(is(name,"scl y")) scene_add_ref(C->scene,"struct_ref","object","scl_y",&object->size[1],object); else if(is(name,"scl z")) scene_add_ref(C->scene,"struct_ref","object","scl_z",&object->size[2],object); else if(is(name,"red") && mat) scene_add_ref(C->scene,"struct_ref","material","red",&mat->color[0],mat); else if(is(name,"green") && mat) scene_add_ref(C->scene,"struct_ref","material","green",&mat->color[1],mat); else if(is(name,"blue") && mat) scene_add_ref(C->scene,"struct_ref","material","blue",&mat->color[2],mat); else if(is(name,"alpha") && mat) scene_add_ref(C->scene,"struct_ref","material","alpha",&mat->color[3],mat); else if(is(name,"quad face") && mesh) scene_add_ref(C->scene,"struct_ref","mesh","quad_face",&mesh->quad_face,mesh); else if(is(name,"mesh") && mesh) scene_add_ref(C->scene,"struct_ref","mesh","mesh",mesh,mesh); }