mirror of
https://github.com/godotengine/godot.git
synced 2024-11-24 13:12:42 +00:00
Merge pull request #99058 from UnfavorableEnhancer/animation_snapping_fix
[4.3] Fix animation snapping in seconds mode
This commit is contained in:
commit
305bdbfb3b
@ -7052,25 +7052,23 @@ void AnimationTrackEditor::_update_snap_unit() {
|
|||||||
if (timeline->is_using_fps()) {
|
if (timeline->is_using_fps()) {
|
||||||
snap_unit = 1.0 / step->get_value();
|
snap_unit = 1.0 / step->get_value();
|
||||||
} else {
|
} else {
|
||||||
double integer;
|
snap_unit = step->get_value();
|
||||||
double fraction = Math::modf(step->get_value(), &integer);
|
|
||||||
fraction = 1.0 / Math::round(1.0 / fraction);
|
|
||||||
snap_unit = integer + fraction;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float AnimationTrackEditor::snap_time(float p_value, bool p_relative) {
|
float AnimationTrackEditor::snap_time(float p_value, bool p_relative) {
|
||||||
if (is_snap_enabled()) {
|
if (is_snap_enabled()) {
|
||||||
|
double current_snap = snap_unit;
|
||||||
if (Input::get_singleton()->is_key_pressed(Key::SHIFT)) {
|
if (Input::get_singleton()->is_key_pressed(Key::SHIFT)) {
|
||||||
// Use more precise snapping when holding Shift.
|
// Use more precise snapping when holding Shift.
|
||||||
snap_unit *= 0.25;
|
current_snap *= 0.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p_relative) {
|
if (p_relative) {
|
||||||
double rel = Math::fmod(timeline->get_value(), snap_unit);
|
double rel = Math::fmod(timeline->get_value(), current_snap);
|
||||||
p_value = Math::snapped(p_value + rel, snap_unit) - rel;
|
p_value = Math::snapped(p_value + rel, current_snap) - rel;
|
||||||
} else {
|
} else {
|
||||||
p_value = Math::snapped(p_value, snap_unit);
|
p_value = Math::snapped(p_value, current_snap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user