Пример #1
0
void move_selected_keys_time_left( curve_t<K>& c, float offset, bool do_round = false)
{
	typedef typename curve_t<K>::iterator iterator;
	iterator it( c.begin()), prev( c.begin());
	
	float new_time;

	if( it->selected())
	{
		new_time = it->time() - offset;
		
		if( do_round)
			new_time = round( new_time);

		it->set_time( new_time);
	}

	++it;
	
	for( ; it != c.end(); ++it, ++prev)
	{
		if( it->selected())
		{
			new_time = it->time() - offset;

			if( do_round)
				new_time = round( new_time);
			
			it->set_time( std::max( new_time, prev->time() + keyframe_t::time_tolerance()));
		}
	}
}
Пример #2
0
void do_reverse_selected_keyframes( curve_t<K>& c)
{
	typedef typename curve_t<K>::iterator iterator;
	
	iterator start( c.begin());
	iterator end( c.end());

	iterator s_it = move_to_next_selected( start, end, end);	
	if( s_it == end)
		return;

	iterator e_it = move_to_prev_selected( end - 1, start, start);
	if( e_it == start)
		return;
	
	while( s_it != e_it)
	{
		s_it->swap_value( *e_it);

		++s_it;
		s_it = move_to_next_selected( s_it, e_it, end);
		
		if( s_it == end)
			return;

		--e_it;
		e_it = move_to_prev_selected( e_it, s_it, start);

		if( e_it == start)
			return;
	}
}
Пример #3
0
void do_reverse_keyframes( curve_t<K>& c)
{
	typedef typename curve_t<K>::iterator iterator;
	
	iterator s_it( c.begin());
	iterator e_it( c.end() - 1);

	while( s_it != e_it)
	{
		s_it->swap_value( *e_it);
		++s_it;
		--e_it;
	}
}