void CharacterGame::play(const char* id, bool repeat, float speed) { AnimationClip* clip = _animation->getClip(id); // Set clip properties clip->setSpeed(speed); clip->setRepeatCount(repeat ? AnimationClip::REPEAT_INDEFINITE : 1); // Is the clip already playing? if (clip == _currentClip && clip->isPlaying()) return; if (_jumpClip->isPlaying()) { _currentClip = clip; return; } // If a current clip is playing, crossfade into the new one if (_currentClip && _currentClip->isPlaying()) { _currentClip->crossFade(clip, 150); } else { clip->play(); } _currentClip = clip; }
void Animation::play(const char* clipId) { // If id is NULL, play the default clip. if (clipId == NULL) { if (_defaultClip == NULL) createDefaultClip(); _defaultClip->play(); } else { // Find animation clip.. and play. AnimationClip* clip = findClip(clipId); if (clip != NULL) clip->play(); } }