unsigned sampleAnimation(const std::string &tname, const std::string &aname, float timePassed, float speed, bool loop) { unsigned index = (timePassed / getAnimationDuration(tname,aname)) * (getAnimationLength(tname,aname)); if (loop) index %= getAnimationLength(tname, aname); else if (index == getAnimationLength(tname, aname)) index--; return getFrame(tname, aname, index); }
void Recording::apply( Skeleton *skeleton, const BoneMask& boneMask/*=default_bone_mask*/ ) { if (getAnimationLength() > 0.f) { animation->apply(skeleton, playbackTime, 1.f, 1.f, boneMask); } }
float getAnimationDuration(const std::string &tname, const std::string &aname) { return getAnimationLength(tname,aname) / frameRates[tname][aname]; }