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:
@@ -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);
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user