143 {
145 {
146 return 0f;
147 }
149 {
150 return keys[0].internalValue;
151 }
152 CurveKey curveKey =
keys[0];
153 CurveKey curveKey2 =
keys[keys.Count - 1];
154 float num = position;
155 float num2 = 0f;
156 if (num < curveKey.position)
157 {
158 if (
preLoop == CurveLoopType.Constant)
159 {
160 return curveKey.internalValue;
161 }
162 if (
preLoop == CurveLoopType.Linear)
163 {
164 return curveKey.internalValue - curveKey.tangentIn * (curveKey.position - num);
165 }
167 {
169 }
171 float num4 = num - (curveKey.position + num3 *
keys.
TimeRange);
172 if (
preLoop == CurveLoopType.Cycle)
173 {
174 num = curveKey.position + num4;
175 }
176 else if (
preLoop == CurveLoopType.CycleOffset)
177 {
178 num = curveKey.position + num4;
179 num2 = (curveKey2.internalValue - curveKey.internalValue) * num3;
180 }
181 else
182 {
183 num = ((((uint)(int)num3 & (true ? 1u : 0u)) != 0) ? (curveKey2.position - num4) : (curveKey.position + num4));
184 }
185 }
186 else if (curveKey2.position < num)
187 {
188 if (
postLoop == CurveLoopType.Constant)
189 {
190 return curveKey2.internalValue;
191 }
192 if (
postLoop == CurveLoopType.Linear)
193 {
194 return curveKey2.internalValue - curveKey2.tangentOut * (curveKey2.position - num);
195 }
197 {
199 }
201 float num6 = num - (curveKey.position + num5 *
keys.
TimeRange);
202 if (
postLoop == CurveLoopType.Cycle)
203 {
204 num = curveKey.position + num6;
205 }
206 else if (
postLoop == CurveLoopType.CycleOffset)
207 {
208 num = curveKey.position + num6;
209 num2 = (curveKey2.internalValue - curveKey.internalValue) * num5;
210 }
211 else
212 {
213 num = ((((uint)(int)num5 & (true ? 1u : 0u)) != 0) ? (curveKey2.position - num6) : (curveKey.position + num6));
214 }
215 }
216 CurveKey k = null;
217 CurveKey k2 = null;
219 return num2 +
Hermite(k, k2, num);
220 }
void ComputeCacheValues()
static float Hermite(CurveKey k0, CurveKey k1, float t)
float FindSegment(float t, ref CurveKey k0, ref CurveKey k1)