50 std::vector<long long>& times,
51 std::vector<Real>& vals,
52 long long fbx_time)
mutable ->
Real
55 int size = times.size();
56 if (fbx_time < 0.f)
return init;
57 if (times[size - 1] == 0)
return vals[size - 1];
59 if (fbx_time >= times[size - 1]) {
60 fbx_time %= times[size - 1];
67 while(cur + 1 < size && times[cur + 1] <= fbx_time)
72 long long left_time, right_time;
73 left_time = (cur ==
BEFORE) ? 0 : times[cur];
74 right_time = times[cur + 1];
75 Real left_val, right_val;
76 left_val = (cur ==
BEFORE) ? init : vals[cur];
77 right_val = vals[cur + 1];
80 Real t =
Real(
double(fbx_time - left_time) /
double(right_time - left_time));
81 return left_val * (1 - t) + right_val * t;
95 std::vector<long long>& times,
96 std::vector<Real>& vals,
98 int& cur)
mutable ->
Real
100 int size = times.size();
101 if (fbx_time < 0.f)
return init;
103 if (fbx_time >= times[size - 1])
return vals[size - 1];
105 while(cur + 1 < size && times[cur + 1] <= fbx_time)
110 long long left_time, right_time;
111 left_time = (cur ==
BEFORE) ? 0 : times[cur];
112 right_time = times[cur + 1];
113 Real left_val, right_val;
114 left_val = (cur ==
BEFORE) ? init : vals[cur];
115 right_val = vals[cur + 1];
118 Real t =
Real(
double(fbx_time - left_time) /
double(right_time - left_time));
119 return left_val * (1 - t) + right_val * t;
134 std::vector<long long>& times,
135 std::vector<Real>& vals,
136 long long fbx_time)
mutable ->
Real
139 int size = times.size();
140 if (fbx_time < 0.f)
return init;
142 if (fbx_time >= times[size - 1])
143 return vals[size - 1];
145 while(cur + 1 < size && times[cur + 1] <= fbx_time)
150 long long left_time, right_time;
151 left_time = (cur ==
BEFORE) ? 0 : times[cur];
152 right_time = times[cur + 1];
153 Real left_val, right_val;
154 left_val = (cur ==
BEFORE) ? init : vals[cur];
155 right_val = vals[cur + 1];
158 Real t =
Real(
double(fbx_time - left_time) /
double(right_time - left_time));
159 return left_val * (1 - t) + right_val * t;