Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_view3d/view3d_placement.c
| Show First 20 Lines • Show All 1,351 Lines • ▼ Show 20 Lines | static int view3d_interactive_add_modal(bContext *C, wmOperator *op, const wmEvent *event) | ||||
| else { | else { | ||||
| BLI_assert(0); | BLI_assert(0); | ||||
| } | } | ||||
| if (do_cursor_update) { | if (do_cursor_update) { | ||||
| const float mval_fl[2] = {UNPACK2(event->mval)}; | const float mval_fl[2] = {UNPACK2(event->mval)}; | ||||
| /* Calculate the snap location on mouse-move or when toggling snap. */ | /* Calculate the snap location on mouse-move or when toggling snap. */ | ||||
| bool is_snap_found_prev = ipd->is_snap_found; | |||||
| ipd->is_snap_found = false; | ipd->is_snap_found = false; | ||||
| if (ipd->use_snap) { | if (ipd->use_snap) { | ||||
| if (ipd->snap_gizmo != NULL) { | if (ipd->snap_gizmo != NULL) { | ||||
| ED_gizmotypes_snap_3d_toggle_set(ipd->snap_gizmo, ipd->use_snap); | ED_gizmotypes_snap_3d_toggle_set(ipd->snap_gizmo, ipd->use_snap); | ||||
| if (ED_gizmotypes_snap_3d_update(ipd->snap_gizmo, | if (ED_gizmotypes_snap_3d_update(ipd->snap_gizmo, | ||||
| CTX_data_ensure_evaluated_depsgraph(C), | CTX_data_ensure_evaluated_depsgraph(C), | ||||
| ipd->region, | ipd->region, | ||||
| ipd->v3d, | ipd->v3d, | ||||
| NULL, | G_MAIN->wm.first, | ||||
| mval_fl, | mval_fl, | ||||
| ipd->snap_co, | ipd->snap_co, | ||||
| NULL)) { | NULL)) { | ||||
| ipd->is_snap_found = true; | ipd->is_snap_found = true; | ||||
| } | } | ||||
| ED_gizmotypes_snap_3d_toggle_clear(ipd->snap_gizmo); | ED_gizmotypes_snap_3d_toggle_clear(ipd->snap_gizmo); | ||||
| } | } | ||||
| } | } | ||||
| /* Workaround because test_select doesn't run at the same time as the modal operator. */ | |||||
| if (is_snap_found_prev != ipd->is_snap_found) { | |||||
| wmGizmoMap *gzmap = ipd->region->gizmo_map; | |||||
| WM_gizmo_highlight_set(gzmap, ipd->is_snap_found ? ipd->snap_gizmo : NULL); | |||||
| } | |||||
| if (ipd->step_index == STEP_BASE) { | if (ipd->step_index == STEP_BASE) { | ||||
| if (ipd->is_snap_found) { | if (ipd->is_snap_found) { | ||||
| closest_to_plane_normalized_v3( | closest_to_plane_normalized_v3( | ||||
| ipd->step[STEP_BASE].co_dst, ipd->step[STEP_BASE].plane, ipd->snap_co); | ipd->step[STEP_BASE].co_dst, ipd->step[STEP_BASE].plane, ipd->snap_co); | ||||
| } | } | ||||
| else { | else { | ||||
| if (view3d_win_to_3d_on_plane_maybe_fallback( | if (view3d_win_to_3d_on_plane_maybe_fallback( | ||||
| region, | region, | ||||
| ▲ Show 20 Lines • Show All 501 Lines • Show Last 20 Lines | |||||