Browse Source

Avoid animation length from ever being completely, fixes #19420

Juan Linietsky 7 năm trước cách đây
mục cha
commit
9cb17d7af8
2 tập tin đã thay đổi với 8 bổ sung2 xóa
  1. 3 1
      editor/animation_track_editor.cpp
  2. 5 1
      scene/resources/animation.cpp

+ 3 - 1
editor/animation_track_editor.cpp

@@ -643,6 +643,8 @@ void AnimationTimelineEdit::_anim_length_changed(double p_new_len) {
 	if (editing)
 		return;
 
+	p_new_len = MAX(0.001, p_new_len);
+
 	editing = true;
 	*block_animation_update_ptr = true;
 	undo_redo->create_action("Change animation length");
@@ -1059,7 +1061,7 @@ AnimationTimelineEdit::AnimationTimelineEdit() {
 	time_icon->set_tooltip(TTR("Animation Length Time (seconds)"));
 	len_hb->add_child(time_icon);
 	length = memnew(EditorSpinSlider);
-	length->set_min(0);
+	length->set_min(0.001);
 	length->set_max(3600);
 	length->set_step(0.01);
 	length->set_allow_greater(true);

+ 5 - 1
scene/resources/animation.cpp

@@ -32,6 +32,8 @@
 
 #include "geometry.h"
 
+#define ANIM_MIN_LENGTH 0.001
+
 bool Animation::_set(const StringName &p_name, const Variant &p_value) {
 
 	String name = p_name;
@@ -2524,7 +2526,9 @@ StringName Animation::animation_track_get_key_animation(int p_track, int p_key)
 
 void Animation::set_length(float p_length) {
 
-	ERR_FAIL_COND(length < 0);
+	if (p_length < ANIM_MIN_LENGTH) {
+		p_length = ANIM_MIN_LENGTH;
+	}
 	length = p_length;
 	emit_changed();
 }