Ejemplo n.º 1
0
void LidarLine2::set(const Line2& line)
{
	Vector2d normal = line.getNormal();
	l = abs(line.getC() / normal.getLength());

	normal *= -line.getC();
	alpha = normal.getAngle2D();
}
Ejemplo n.º 2
0
void ComponentSteering::update()
{
	if(!isReached)
	{
			if(targetObject != NULL)
			{
				if(targetObject->isDead())
				{
					targetObject = NULL;
					target = target - parent->position;
					target.normalize();
					target *= 10000; //Deberian seguir en linea recta 
										
				} else
				{
					target = targetObject->position;
				}
			}
			Vector2d movement;
			if(leader)
			{
				/*for(unsigned int i=0;i<mainPlayers.size();i++)
				{
					movement += evade(mainPlayers[i]);
				}*/
				movement += arrive(this->target);
				move(movement);

				Vector2d distanceVector = this->target - parent->position;
				// Vector2d te permite calcular las distancias
				float distance = distanceVector.getLength();

				// Entra en el rango del objetivo
				if(distance < 5)
				{
					isReached = true;
					Message message;
					message.type = Message::TARGET_REACHED;
					parent->broadcastMessage(message);
				}
			}
	}
}