|
@@ -162,8 +162,11 @@ void AnimResolver::UpdateAnimRangeSetup() {
|
|
const double my_last = (*it).keys.back().time;
|
|
const double my_last = (*it).keys.back().time;
|
|
|
|
|
|
const double delta = my_last - my_first;
|
|
const double delta = my_last - my_first;
|
|
|
|
+ if (delta == 0.0) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
const size_t old_size = (*it).keys.size();
|
|
const size_t old_size = (*it).keys.size();
|
|
-
|
|
|
|
const float value_delta = (*it).keys.back().value - (*it).keys.front().value;
|
|
const float value_delta = (*it).keys.back().value - (*it).keys.front().value;
|
|
|
|
|
|
// NOTE: We won't handle reset, linear and constant here.
|
|
// NOTE: We won't handle reset, linear and constant here.
|
|
@@ -176,8 +179,7 @@ void AnimResolver::UpdateAnimRangeSetup() {
|
|
case LWO::PrePostBehaviour_Oscillate: {
|
|
case LWO::PrePostBehaviour_Oscillate: {
|
|
const double start_time = delta - std::fmod(my_first - first, delta);
|
|
const double start_time = delta - std::fmod(my_first - first, delta);
|
|
std::vector<LWO::Key>::iterator n = std::find_if((*it).keys.begin(), (*it).keys.end(),
|
|
std::vector<LWO::Key>::iterator n = std::find_if((*it).keys.begin(), (*it).keys.end(),
|
|
- [start_time](double t) { return start_time > t; }),
|
|
|
|
- m;
|
|
|
|
|
|
+ [start_time](double t) { return start_time > t; }), m;
|
|
|
|
|
|
size_t ofs = 0;
|
|
size_t ofs = 0;
|
|
if (n != (*it).keys.end()) {
|
|
if (n != (*it).keys.end()) {
|