diff options
author | Jared <avencherus@gmail.com> | 2019-01-15 17:36:22 +0200 |
---|---|---|
committer | Jared <avencherus@gmail.com> | 2019-05-02 19:14:36 +0300 |
commit | e03f9ead2148839a39039bef4eefdb1e2770f24f (patch) | |
tree | 3bacd6748f62a08043469749486c84c48ea59469 /scene | |
parent | 46b6fb83efc8e021cf60502d1e42fdd912b020eb (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.cpp | 14 |
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--; |