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`.
This commit is contained in:
2021-06-29 18:08:41 -03:00
parent 929d9ec0c7
commit 2d35eed34d
5 changed files with 17 additions and 8 deletions

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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 {

View File

@@ -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);

View File

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