summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorJared <avencherus@gmail.com>2019-01-15 17:36:22 +0200
committerJared <avencherus@gmail.com>2019-05-02 19:14:36 +0300
commite03f9ead2148839a39039bef4eefdb1e2770f24f (patch)
tree3bacd6748f62a08043469749486c84c48ea59469 /scene
parent46b6fb83efc8e021cf60502d1e42fdd912b020eb (diff)
Do precision comparison to prevent the creation of keyframes with a time that already exists.
Diffstat (limited to 'scene')
-rw-r--r--scene/resources/animation.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp
index 9c79b2ba3b..8ee824dbe2 100644
--- a/scene/resources/animation.cpp
+++ b/scene/resources/animation.cpp
@@ -819,15 +819,17 @@ int Animation::_insert(float p_time, T &p_keys, const V &p_value) {
while (true) {
- if (idx == 0 || p_keys[idx - 1].time < p_time) {
- //condition for insertion.
- p_keys.insert(idx, p_value);
- return idx;
- } else if (p_keys[idx - 1].time == p_time) {
+ // Condition for replacement.
+ if (idx > 0 && Math::is_equal_approx(p_keys[idx - 1].time, p_time)) {
- // condition for replacing.
p_keys.write[idx - 1] = p_value;
return idx - 1;
+
+ // Condition for insert.
+ } else if (idx == 0 || p_keys[idx - 1].time < p_time) {
+
+ p_keys.insert(idx, p_value);
+ return idx;
}
idx--;