void AnimationCleanerVisitor::cleanAnimation(osgAnimation::Animation& animation) { // remove animation's invalid channels osgAnimation::ChannelList& channels = animation.getChannels(); osgAnimation::ChannelList invalids; for(osgAnimation::ChannelList::iterator channel = channels.begin() ; channel != channels.end() ; ++ channel) { if(channel->valid()) { cleanChannel(*channel->get()); } if(!channel->valid() || !isValidChannel(*channel->get())) { invalids.push_back(channel->get()); } } for(osgAnimation::ChannelList::iterator invalid = invalids.begin() ; invalid != invalids.end() ; ++ invalid) { animation.removeChannel(invalid->get()); } }