From 2d35eed34d01e4e63d672e35da7b3d45e97ff9ee Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Tue, 29 Jun 2021 18:08:41 -0300 Subject: Cleanup: split uses of _snap_sequencer_apply according to transform mode The `applySnap` callback of each mode was overwriting the value calculated in `transform_snap_sequencer_apply`. --- .../editors/transform/transform_mode_edge_seq_slide.c | 1 + source/blender/editors/transform/transform_mode_translate.c | 3 +++ source/blender/editors/transform/transform_snap.c | 6 +++--- source/blender/editors/transform/transform_snap.h | 3 ++- source/blender/editors/transform/transform_snap_sequencer.c | 12 ++++++++---- 5 files changed, 17 insertions(+), 8 deletions(-) (limited to 'source/blender/editors/transform') diff --git a/source/blender/editors/transform/transform_mode_edge_seq_slide.c b/source/blender/editors/transform/transform_mode_edge_seq_slide.c index 1b054696930..fe853440c96 100644 --- a/source/blender/editors/transform/transform_mode_edge_seq_slide.c +++ b/source/blender/editors/transform/transform_mode_edge_seq_slide.c @@ -149,6 +149,7 @@ void initSeqSlide(TransInfo *t) { t->transform = applySeqSlide; t->handleEvent = seq_slide_handleEvent; + t->tsnap.applySnap = transform_snap_sequencer_apply_translate; initMouseInputMode(t, &t->mouse, INPUT_VECTOR); diff --git a/source/blender/editors/transform/transform_mode_translate.c b/source/blender/editors/transform/transform_mode_translate.c index 394271f7724..49afd7f0421 100644 --- a/source/blender/editors/transform/transform_mode_translate.c +++ b/source/blender/editors/transform/transform_mode_translate.c @@ -222,6 +222,9 @@ static void ApplySnapTranslation(TransInfo *t, float vec[3]) vec[1] = point[1] - t->tsnap.snapTarget[1]; } } + else if (t->spacetype == SPACE_SEQ) { + transform_snap_sequencer_apply_translate(t, vec); + } else { if (t->spacetype == SPACE_VIEW3D) { if (t->options & CTX_PAINT_CURVE) { diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 1749a63e1dc..9a33dc1218d 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -499,7 +499,7 @@ void applySnapping(TransInfo *t, float *vec) t->tsnap.last = current; - if (t->tsnap.applySnap && validSnap(t)) { + if (validSnap(t)) { t->tsnap.applySnap(t, vec); } } @@ -980,10 +980,10 @@ static void snap_calc_node_fn(TransInfo *t, float *UNUSED(vec)) } } -static void snap_calc_sequencer_fn(TransInfo *t, float *vec) +static void snap_calc_sequencer_fn(TransInfo *t, float *UNUSED(vec)) { BLI_assert(t->spacetype == SPACE_SEQ); - if (transform_snap_sequencer_apply(t, vec, t->tsnap.snapPoint)) { + if (transform_snap_sequencer_calc(t)) { t->tsnap.status |= (POINT_INIT | TARGET_INIT); } else { diff --git a/source/blender/editors/transform/transform_snap.h b/source/blender/editors/transform/transform_snap.h index e0989418c1c..6dfaeab93e6 100644 --- a/source/blender/editors/transform/transform_snap.h +++ b/source/blender/editors/transform/transform_snap.h @@ -84,4 +84,5 @@ float transform_snap_distance_len_squared_fn(TransInfo *t, const float p1[3], co /* transform_snap_sequencer.c */ struct TransSeqSnapData *transform_snap_sequencer_data_alloc(const TransInfo *t); void transform_snap_sequencer_data_free(struct TransSeqSnapData *data); -bool transform_snap_sequencer_apply(struct TransInfo *t, float *vec, float *snap_point); +bool transform_snap_sequencer_calc(struct TransInfo *t); +void transform_snap_sequencer_apply_translate(TransInfo *t, float *vec); diff --git a/source/blender/editors/transform/transform_snap_sequencer.c b/source/blender/editors/transform/transform_snap_sequencer.c index 22d738e75ca..3100a8f5c39 100644 --- a/source/blender/editors/transform/transform_snap_sequencer.c +++ b/source/blender/editors/transform/transform_snap_sequencer.c @@ -234,11 +234,10 @@ void transform_snap_sequencer_data_free(TransSeqSnapData *data) MEM_freeN(data); } -bool transform_snap_sequencer_apply(TransInfo *t, float *vec, float *snap_point) +bool transform_snap_sequencer_calc(TransInfo *t) { const TransSeqSnapData *snap_data = t->tsnap.seq_context; int best_dist = MAXFRAME, best_target_frame = 0, best_source_frame = 0; - *snap_point = 0; for (int i = 0; i < snap_data->source_snap_point_count; i++) { int snap_source_frame = snap_data->source_snap_points[i] + round_fl_to_int(t->values[0]); @@ -260,7 +259,12 @@ bool transform_snap_sequencer_apply(TransInfo *t, float *vec, float *snap_point) return false; } - *snap_point = best_target_frame; - *vec += best_target_frame - best_source_frame; + t->tsnap.snapPoint[0] = best_target_frame; + t->tsnap.snapTarget[0] = best_source_frame; return true; } + +void transform_snap_sequencer_apply_translate(TransInfo *t, float *vec) +{ + *vec += t->tsnap.snapPoint[0] - t->tsnap.snapTarget[0]; +} -- cgit v1.2.3