Fix scale from cursor in Animation Player
This commit is contained in:
parent
931820d33c
commit
e9edff8d25
@ -6538,7 +6538,6 @@ void AnimationTrackEditor::goto_next_step(bool p_from_mouse_event, bool p_timeli
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||||
last_menu_track_opt = p_option;
|
|
||||||
switch (p_option) {
|
switch (p_option) {
|
||||||
case EDIT_COPY_TRACKS: {
|
case EDIT_COPY_TRACKS: {
|
||||||
track_copy_select->clear();
|
track_copy_select->clear();
|
||||||
@ -6698,11 +6697,15 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
|||||||
|
|
||||||
undo_redo->commit_action();
|
undo_redo->commit_action();
|
||||||
} break;
|
} break;
|
||||||
|
case EDIT_SCALE_SELECTION: {
|
||||||
case EDIT_SCALE_SELECTION:
|
scale_dialog->popup_centered(Size2(200, 100) * EDSCALE);
|
||||||
|
scale->get_line_edit()->grab_focus();
|
||||||
|
scale_from_cursor = false;
|
||||||
|
} break;
|
||||||
case EDIT_SCALE_FROM_CURSOR: {
|
case EDIT_SCALE_FROM_CURSOR: {
|
||||||
scale_dialog->popup_centered(Size2(200, 100) * EDSCALE);
|
scale_dialog->popup_centered(Size2(200, 100) * EDSCALE);
|
||||||
scale->get_line_edit()->grab_focus();
|
scale->get_line_edit()->grab_focus();
|
||||||
|
scale_from_cursor = true;
|
||||||
} break;
|
} break;
|
||||||
case EDIT_SCALE_CONFIRM: {
|
case EDIT_SCALE_CONFIRM: {
|
||||||
if (selection.is_empty()) {
|
if (selection.is_empty()) {
|
||||||
@ -6725,9 +6728,8 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
len = to_t - from_t;
|
len = to_t - from_t;
|
||||||
if (last_menu_track_opt == EDIT_SCALE_FROM_CURSOR) {
|
if (scale_from_cursor) {
|
||||||
pivot = timeline->get_play_position();
|
pivot = timeline->get_play_position();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
pivot = from_t;
|
pivot = from_t;
|
||||||
}
|
}
|
||||||
@ -6769,7 +6771,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
|||||||
to_restore.push_back(amr);
|
to_restore.push_back(amr);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define NEW_POS(m_ofs) (((s > 0) ? m_ofs : from_t + (len - (m_ofs - from_t))) - pivot) * Math::abs(s) + from_t
|
#define NEW_POS(m_ofs) (((s > 0) ? m_ofs : from_t + (len - (m_ofs - from_t))) - pivot) * Math::abs(s) + pivot
|
||||||
// 3 - Move the keys (re insert them).
|
// 3 - Move the keys (re insert them).
|
||||||
for (RBMap<SelectedKey, KeyInfo>::Element *E = selection.back(); E; E = E->prev()) {
|
for (RBMap<SelectedKey, KeyInfo>::Element *E = selection.back(); E; E = E->prev()) {
|
||||||
float newpos = NEW_POS(E->get().pos);
|
float newpos = NEW_POS(E->get().pos);
|
||||||
|
@ -789,7 +789,7 @@ class AnimationTrackEditor : public VBoxContainer {
|
|||||||
|
|
||||||
void _edit_menu_about_to_popup();
|
void _edit_menu_about_to_popup();
|
||||||
void _edit_menu_pressed(int p_option);
|
void _edit_menu_pressed(int p_option);
|
||||||
int last_menu_track_opt = 0;
|
bool scale_from_cursor = false;
|
||||||
|
|
||||||
void _cleanup_animation(Ref<Animation> p_animation);
|
void _cleanup_animation(Ref<Animation> p_animation);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user