#include "Behaviors/StateMachine.h"

$nodeclass Lab4Q3 : VisualRoutinesStateNode {
	$nodeclass GetEllipse : MapBuilderNode : doStart {
		mapreq.addObjectColor(ellipseDataType, "red");
		//mapreq.addObjectColor(ellipseDataType, "yellow");
		mapreq.addObjectColor(ellipseDataType, "blue");
	}

	$nodeclass BuildPolygon : VisualRoutinesStateNode : doStart {
		//get ellipses
		NEW_SHAPEVEC(ellipse_shapes, EllipseData, select_type<EllipseData>(camShS));
		vector<Point> marks;
		SHAPEVEC_ITERATE(ellipse_shapes, EllipseData, myE)
			if(myE->getColor() == rgb(200,64,64)){
				marks.push_back(myE->getCentroid());
			}
		END_ITERATE;

		NEW_SHAPE(poly_1, PolygonData, new PolygonData(camShS, marks, true, true, true));
		SHAPEVEC_ITERATE(ellipse_shapes, EllipseData, myE)
			
			if(myE->getColor() != rgb(200,64,64)){
				if(poly_1->isInside(myE->getCentroid())){
					cout << "Ellipse id:"
						<< myE->getId() 
						<< " is inside the polygon." << endl;
				}else{
					cout << "Ellipse id:"
						<< myE->getId()
						<< " is outside the polygon." << endl;
				}
			}
		END_ITERATE;
			
		//~marks();
	}


	$setupmachine {
		GetEllipse =C=> BuildPolygon
	}
}



REGISTER_BEHAVIOR(Lab4Q3);

