void walk_view_cursor(bool rot_ok) { // special check for nodes link changes if ((select_count()==1) && (select_has_type(node_piece))) { if (main_wind_option_down()) { os_set_cut_cursor(); return; } if (main_wind_control_down()) { os_set_add_cursor(); return; } } // normal cursors if (main_wind_space_down()) { os_set_hand_cursor(); return; } if ((main_wind_option_down()) && ((!main_wind_control_down()) && (!main_wind_shift_down()))) { os_set_forward_cursor(); return; } if ((main_wind_command_down()) && (rot_ok)) { os_set_rotate_cursor(); return; } os_set_arrow_cursor(); }
void select_model_wind_vertex_drag_sel(d3pnt *start_pnt,float *pv) { char *org_vertex_sel; bool chg_sel; d3rect mbox; d3pnt pnt,last_pnt; // turn on or off? org_vertex_sel=(char*)malloc(model.meshes[state.model.cur_mesh_idx].nvertex); if (os_key_shift_down()) { select_model_wind_save_drag_sel_state(org_vertex_sel); os_set_add_cursor(); chg_sel=TRUE; } else { if (os_key_control_down()) { select_model_wind_save_drag_sel_state(org_vertex_sel); os_set_subtract_cursor(); chg_sel=FALSE; } else { memset(org_vertex_sel,0x0,model.meshes[state.model.cur_mesh_idx].nvertex); os_set_arrow_cursor(); chg_sel=TRUE; } } // drag the selection last_pnt.x=last_pnt.y=-1; state.model.drag_sel_on=TRUE; model_wind_get_box(&mbox); while (!os_track_mouse_location(&pnt,&mbox)) { if ((last_pnt.x==pnt.x) && (last_pnt.y==pnt.y)) continue; memmove(&last_pnt,&pnt,sizeof(d3pnt)); if (start_pnt->x<last_pnt.x) { state.model.drag_sel_box.lx=start_pnt->x; state.model.drag_sel_box.rx=last_pnt.x; } else { state.model.drag_sel_box.rx=start_pnt->x; state.model.drag_sel_box.lx=last_pnt.x; } if (start_pnt->y<last_pnt.y) { state.model.drag_sel_box.ty=start_pnt->y; state.model.drag_sel_box.by=last_pnt.y; } else { state.model.drag_sel_box.by=start_pnt->y; state.model.drag_sel_box.ty=last_pnt.y; } select_model_wind_restore_drag_sel_state(org_vertex_sel); model_drag_sel_vertex(pv,&state.model.drag_sel_box,chg_sel); if (state.model.select_mode==select_mode_polygon) select_model_wind_select_poly_for_vertex_drag_sel(); main_wind_draw(); } state.model.drag_sel_on=FALSE; free(org_vertex_sel); }