AnimationState* AnimatedModel::GetAnimationState(StringHash animationNameHash) const { for (Vector<SharedPtr<AnimationState> >::ConstIterator i = animationStates_.Begin(); i != animationStates_.End(); ++i) { Animation* animation = (*i)->GetAnimation(); if (animation) { // Check both the animation and the resource name if (animation->GetNameHash() == animationNameHash || animation->GetAnimationNameHash() == animationNameHash) return *i; } } return nullptr; }
AnimationState* AnimationController::GetAnimationState(StringHash nameHash) const { // Model mode AnimatedModel* model = GetComponent<AnimatedModel>(); if (model) return model->GetAnimationState(nameHash); // Node hierarchy mode for (Vector<SharedPtr<AnimationState> >::ConstIterator i = nodeAnimationStates_.Begin(); i != nodeAnimationStates_.End(); ++i) { Animation* animation = (*i)->GetAnimation(); if (animation->GetNameHash() == nameHash || animation->GetAnimationNameHash() == nameHash) return *i; } return 0; }
AnimationState* AnimationController::GetAnimationState(StringHash nameHash) const { // Model mode auto* model = GetComponent<AnimatedModel>(); if (model) return model->GetAnimationState(nameHash); // Node hierarchy mode for (auto i = nodeAnimationStates_.begin(); i != nodeAnimationStates_.end(); ++i) { Animation* animation = (*i)->GetAnimation(); if (animation->GetNameHash() == nameHash || animation->GetAnimationNameHash() == nameHash) return *i; } return nullptr; }
void AnimatedModel::RemoveAnimationState(StringHash animationNameHash) { for (Vector<SharedPtr<AnimationState> >::Iterator i = animationStates_.Begin(); i != animationStates_.End(); ++i) { AnimationState* state = *i; Animation* animation = state->GetAnimation(); if (animation) { // Check both the animation and the resource name if (animation->GetNameHash() == animationNameHash || animation->GetAnimationNameHash() == animationNameHash) { animationStates_.Erase(i); MarkAnimationDirty(); return; } } } }