Animation: Move Snapping to Scene #109015
|
@ -308,7 +308,10 @@ class DOPESHEET_PT_snapping(Panel):
|
|||
layout = self.layout
|
||||
col = layout.column()
|
||||
col.label(text="Snap To")
|
||||
col.prop(context.tool_settings, "snap_anim_element", expand=True)
|
||||
tool_settings = context.tool_settings
|
||||
col.prop(tool_settings, "snap_anim_element", expand=True)
|
||||
if tool_settings.snap_anim_element not in ('MARKER', ):
|
||||
col.prop(tool_settings, "use_snap_time_absolute")
|
||||
|
||||
|
||||
class DOPESHEET_PT_proportional_edit(Panel):
|
||||
|
|
|
@ -112,7 +112,7 @@ class GRAPH_PT_snapping(Panel):
|
|||
col.label(text="Snap To")
|
||||
tool_settings = context.tool_settings
|
||||
col.prop(tool_settings, "snap_anim_element", expand=True)
|
||||
if tool_settings.snap_anim_element in ('FRAME', 'SECOND'):
|
||||
if tool_settings.snap_anim_element not in ('MARKER', ):
|
||||
col.prop(tool_settings, "use_snap_time_absolute")
|
||||
|
||||
|
||||
|
|
|
@ -53,7 +53,10 @@ class NLA_PT_snapping(Panel):
|
|||
layout = self.layout
|
||||
col = layout.column()
|
||||
col.label(text="Snap To")
|
||||
col.prop(context.tool_settings, "snap_anim_element", expand=True)
|
||||
tool_settings = context.tool_settings
|
||||
col.prop(tool_settings, "snap_anim_element", expand=True)
|
||||
if tool_settings.snap_anim_element not in ('MARKER', ):
|
||||
col.prop(tool_settings, "use_snap_time_absolute")
|
||||
|
||||
|
||||
class NLA_PT_filters(DopesheetFilterPopoverBase, Panel):
|
||||
|
@ -370,6 +373,7 @@ classes = (
|
|||
NLA_MT_channel_context_menu,
|
||||
NLA_PT_filters,
|
||||
NLA_PT_action,
|
||||
NLA_PT_snapping,
|
||||
)
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
|
|
|
@ -622,13 +622,13 @@ static void recalcData_actedit(TransInfo *t)
|
|||
|
||||
/* Flush 2d vector. */
|
||||
TransDataContainer *tc = TRANS_DATA_CONTAINER_FIRST_SINGLE(t);
|
||||
eSnapMode autosnap = t->tsnap.mode;
|
||||
eSnapMode snap_mode = t->tsnap.mode;
|
||||
TransData *td;
|
||||
TransData2D *td2d;
|
||||
int i = 0;
|
||||
for (td = tc->data, td2d = tc->data_2d; i < tc->data_len; i++, td++, td2d++) {
|
||||
if (t->tsnap.flag && (t->state != TRANS_CANCEL) && !(td->flag & TD_NOTIMESNAP)) {
|
||||
transform_snap_anim_flush_data(t, td, eSnapMode(autosnap), td->loc);
|
||||
transform_snap_anim_flush_data(t, td, snap_mode, td->loc);
|
||||
}
|
||||
|
||||
/* Constrain Y. */
|
||||
|
|
|
@ -43,30 +43,26 @@ static void headerTimeTranslate(TransInfo *t, char str[UI_MAX_DRAW_STR])
|
|||
outputNumInput(&(t->num), tvec, &t->scene->unit);
|
||||
}
|
||||
else {
|
||||
eSnapMode autosnap = t->tsnap.mode;
|
||||
eSnapMode snap_mode = t->tsnap.mode;
|
||||
float ival = TRANS_DATA_CONTAINER_FIRST_OK(t)->data->ival;
|
||||
float val = ival + t->values_final[0];
|
||||
|
||||
snapFrameTransform(t, autosnap, ival, val, &val);
|
||||
snapFrameTransform(t, snap_mode, ival, val, &val);
|
||||
float delta_x = val - ival;
|
||||
|
||||
if (ELEM(autosnap, SACTSNAP_SECOND, SACTSNAP_TSTEP)) {
|
||||
if (ELEM(snap_mode, SCE_SNAP_TO_SECOND)) {
|
||||
nathanvegdahl marked this conversation as resolved
Outdated
|
||||
/* Convert to seconds. */
|
||||
const Scene *scene = t->scene;
|
||||
const double secf = FPS;
|
||||
delta_x /= secf;
|
||||
val /= secf;
|
||||
delta_x /= FPS;
|
||||
val /= FPS;
|
||||
}
|
||||
|
||||
if (autosnap == SACTSNAP_FRAME) {
|
||||
if (snap_mode == SCE_SNAP_TO_FRAME) {
|
||||
BLI_snprintf(&tvec[0], NUM_STR_REP_LEN, "%.2f (%.4f)", delta_x, val);
|
||||
}
|
||||
else if (autosnap == SACTSNAP_SECOND) {
|
||||
else if (snap_mode == SCE_SNAP_TO_SECOND) {
|
||||
BLI_snprintf(&tvec[0], NUM_STR_REP_LEN, "%.2f sec (%.4f)", delta_x, val);
|
||||
}
|
||||
else if (autosnap == SACTSNAP_TSTEP) {
|
||||
BLI_snprintf(&tvec[0], NUM_STR_REP_LEN, "%.4f sec", delta_x);
|
||||
}
|
||||
else {
|
||||
BLI_snprintf(&tvec[0], NUM_STR_REP_LEN, "%.4f", delta_x);
|
||||
}
|
||||
|
|
|
@ -148,7 +148,7 @@ bool transformModeUseSnap(const TransInfo *t)
|
|||
if (t->mode == TFM_RESIZE) {
|
||||
return (ts->snap_transform_mode_flag & SCE_SNAP_TRANSFORM_MODE_SCALE) != 0;
|
||||
}
|
||||
if (ELEM(t->mode, TFM_VERT_SLIDE, TFM_EDGE_SLIDE, TFM_SEQ_SLIDE)) {
|
||||
if (ELEM(t->mode, TFM_VERT_SLIDE, TFM_EDGE_SLIDE, TFM_SEQ_SLIDE, TFM_TIME_TRANSLATE)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -784,9 +784,6 @@ static void initSnappingMode(TransInfo *t)
|
|||
t->tsnap.seq_context = transform_snap_sequencer_data_alloc(t);
|
||||
}
|
||||
}
|
||||
else if (ELEM(t->spacetype, SPACE_GRAPH, SPACE_NLA, SPACE_ACTION)) {
|
||||
t->tsnap.mode = snap_mode_from_spacetype(t);
|
||||
}
|
||||
}
|
||||
|
||||
void initSnapping(TransInfo *t, wmOperator *op)
|
||||
|
|
Loading…
Reference in New Issue
Probably this can just be
snap_mode == SCE_SNAP_TO_SECOND
now.