int MovementComponent::rotate(float targetRotX, float targetRotY, float targetRotZ, float speed, bool putInQueue, const char* animName)
{	
	Vec3f target(targetRotX, targetRotY, targetRotZ);

	//if we don't want a queue, we must erase all existent movement nodes
	if(!putInQueue)
		clear();
	if(speed < 0)
		speed = m_speed; //use agent default

	//rotate until we reach the target rotation
	Orientation* o = new Orientation( m_eID, target, speed, true );
	o->setAnimation( (animName == 0) ? m_orientAnimName : animName );
	m_movementNodes.push_back( o );

	return o->getID();
}
int MovementComponent::turnTowards(float targetPosX, float targetPosY, float targetPosZ, float speed, bool putInQueue, const char* animName)
{	
	Vec3f target(targetPosX, targetPosY, targetPosZ);

	//if we don't want a queue, we must erase all existent movement nodes
	if(!putInQueue)
		clear();
	if(speed < 0)
		speed = m_speed; //use agent default

	//orient towards the target
	Orientation* o = new Orientation( m_eID, target, speed, false );
	o->setAnimation( (animName == 0) ? m_orientAnimName : animName );
	m_movementNodes.push_back( o );

	return o->getID();
}