[Bf-blender-cvs] [2d35eed34d0] master: Cleanup: split uses of _snap_sequencer_apply according to transform mode

Germano Cavalcante noreply at git.blender.org
Tue Jun 29 23:09:33 CEST 2021


Commit: 2d35eed34d01e4e63d672e35da7b3d45e97ff9ee
Author: Germano Cavalcante
Date:   Tue Jun 29 18:08:41 2021 -0300
Branches: master
https://developer.blender.org/rB2d35eed34d01e4e63d672e35da7b3d45e97ff9ee

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`.

===================================================================

M	source/blender/editors/transform/transform_mode_edge_seq_slide.c
M	source/blender/editors/transform/transform_mode_translate.c
M	source/blender/editors/transform/transform_snap.c
M	source/blender/editors/transform/transform_snap.h
M	source/blender/editors/transform/transform_snap_sequencer.c

===================================================================

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];
+}



More information about the Bf-blender-cvs mailing list