#include "Behaviors/StateMachine.h"
$nodeclass Vee : VisualRoutinesStateNode{
	$nodeclass FindLines :  MapBuilderNode : doStart {
	mapreq.addObjectColor(lineDataType, "red");
	mapreq.addObjectColor(ellipseDataType, "blue");
	mapreq.addOccluderColor(lineDataType, "red");
	PostMachineCompletion();
	}
	$nodeclass LookAbove : VisualRoutinesStateNode : doStart {
		NEW_SHAPEVEC(lines, LineData, select_type<LineData>(camShS));
		//look at the topHalfPlane for both
		if(lines.size() >=2)
		{
			cout << "Found 2 lines" << endl;
			NEW_SKETCH(sketch1, bool,  visops::topHalfPlane(lines[0]));
			NEW_SKETCH(sketch2, bool,  visops::topHalfPlane(lines[1]));
			//and them together
			NEW_SKETCH(vee, bool, sketch1 & sketch2);
			
			NEW_SHAPEVEC(eggs, EllipseData, select_type<EllipseData>(camShS));
			//labelcc
			if(eggs.size() >=0)
			{
				NEW_SKETCH(camFrame, uchar, sketchFromSeg());
				NEW_SKETCH(eggs_sketch, bool, visops::colormask(camFrame, "blue"));
				NEW_SKETCH(eggs_labels, uint, visops::labelcc(eggs_sketch));
				NEW_SKETCH(vee_eggs, bool, eggs_sketch & vee);
			}
			else
				cout << "Found no eggs" << endl;
		}
		else
			cout << "Did not find 2 lines" << endl;
	}
	 $setupmachine{
                FindLines=C=>LookAbove
        }
}
REGISTER_BEHAVIOR(Vee);
