#include "Behaviors/StateMachine.h"

$nodeclass MapBuilderLab : VisualRoutinesStateNode
{

	$nodeclass FindStuff : MapBuilderNode : doStart
	{
		mapreq.addObjectColor(ellipseDataType, "red");
		mapreq.addObjectColor(ellipseDataType, "green");
		mapreq.addObjectColor(ellipseDataType, "blue");
		mapreq.addObjectColor(lineDataType, "blue");
	}

	$nodeclass ReportShapes : VisualRoutinesStateNode : doStart
	{
		float max = 0;
		Shape<LineData> largestLine;
		NEW_SHAPEVEC(line_shapes, LineData, select_type<LineData>(camShS));
		
		SHAPEVEC_ITERATE(line_shapes, LineData, line)
		float len = line->getLength();
		if(len > max)
		{
 			max = len;
			largestLine = line;
		}
		END_ITERATE;

		if(max != 0)
		{
			largestLine->setInfinite();
			NEW_SHAPEVEC(ellipses_shapes, EllipseData, select_type<EllipseData>(camShS));

			SHAPEVEC_ITERATE(ellipses_shapes, EllipseData, ellipse)
			NEW_SHAPE(ellipse0, EllipseData, new EllipseData(camShS,
				ellipse->getCentroid(), ellipse->getSemimajor() * 1.5,
				ellipse->getSemiminor() * 1.5, ellipse->getOrientation()));
			ellipse0->setColor(ellipse->getColor());
			cout << "isLeftOf?" << largestLine->pointIsLeftOf(ellipse->getCentroid()) << endl;
			END_ITERATE;
		}
		else
			cout << "No line seen" << endl;
	}


	$setupmachine {
		FindStuff =C=> ReportShapes
	}
}

REGISTER_BEHAVIOR(MapBuilderLab);
