MCPcopy Create free account
hub / github.com/NVIDIAGameWorks/Falcor / addKeyframe

Method addKeyframe

Source/Falcor/Scene/Animation/Animation.cpp:256–295  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

254 }
255
256 void Animation::addKeyframe(const Keyframe& keyframe)
257 {
258 FALCOR_ASSERT(keyframe.time <= mDuration);
259
260 if (mKeyframes.size() == 0 || mKeyframes[0].time > keyframe.time)
261 {
262 mKeyframes.insert(mKeyframes.begin(), keyframe);
263 }
264 else if (mKeyframes.back().time < keyframe.time)
265 {
266 mKeyframes.push_back(keyframe);
267 }
268 else
269 {
270 for (size_t i = 0; i < mKeyframes.size(); i++)
271 {
272 auto& current = mKeyframes[i];
273 // If we already have a key-frame at the same time, replace it
274 if (current.time == keyframe.time)
275 {
276 current = keyframe;
277 return;
278 }
279
280 // If this is not the last frame, Check if we are in between frames
281 if (i < mKeyframes.size() - 1)
282 {
283 auto& Next = mKeyframes[i + 1];
284 if (current.time < keyframe.time && Next.time > keyframe.time)
285 {
286 mKeyframes.insert(mKeyframes.begin() + i + 1, keyframe);
287 return;
288 }
289 }
290 }
291
292 // If we got here, need to push it to the end of the list
293 mKeyframes.push_back(keyframe);
294 }
295 }
296
297 const Animation::Keyframe& Animation::getKeyframe(double time) const
298 {

Callers 5

FALCOR_SCRIPT_BINDINGFunction · 0.80
createAnimationMethod · 0.80
createSkeletonMethod · 0.80
createAnimationFunction · 0.80

Calls 5

backMethod · 0.80
sizeMethod · 0.45
insertMethod · 0.45
beginMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected