void AnimationState::updateTimelineStates() { if(!_mixingTransforms.empty()) { for(std::map<String , TimelineState*>::iterator iter = _timelineStates.begin() ; iter != _timelineStates.end() ; iter ++) { if(_mixingTransforms.find(iter->first) == _mixingTransforms.end()) { removeTimelineState(iter->first); } } for(std::map<String , int>::iterator iter = _mixingTransforms.begin() ; iter != _mixingTransforms.end() ; iter ++) { if(_timelineStates.find(iter->first) == _timelineStates.end()) { addTimelineState(iter->first); } } } else { for(AnimationData::Timelines::iterator iter = _clip->timelines.begin() ; iter != _clip->timelines.end() ; iter ++) { if(_timelineStates.find(iter->first) == _timelineStates.end()) { addTimelineState(iter->first); } } } }
void AnimationState::clearAll() { _armature = 0; _currentFrame = 0; _clip = 0; _mixingTransforms.clear(); for(std::map<String , TimelineState*>::iterator iter = _timelineStates.begin() ; iter != _timelineStates.end() ; iter ++) { removeTimelineState(iter->first); } }
void AnimationState::updateTimelineStates() { for (size_t i = _timelineStateList.size(); i--;) { TimelineState *timelineState = _timelineStateList[i]; if (!_armature->getBone(timelineState->name)) { removeTimelineState(timelineState); } } if (_mixingTransforms.empty()) { for (size_t i = 0, l = _clip->timelineList.size(); i < l; ++i) { addTimelineState(_clip->timelineList[i]->name); } } else { for (size_t i = _timelineStateList.size(); i--;) { TimelineState *timelineState = _timelineStateList[i]; auto iterator = std::find(_mixingTransforms.cbegin(), _mixingTransforms.cend(), timelineState->name); if (iterator == _mixingTransforms.cend()) { removeTimelineState(timelineState); } } for (size_t i = 0, l = _mixingTransforms.size(); i < l; ++i) { addTimelineState(_mixingTransforms[i]); } } }