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);
             }
         }
     }
 }
Ejemplo n.º 2
0
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]);
        }
    }
}