Example #1
0
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();
}
Example #2
0
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);
}