#include "Behaviors/StateMachine.h"

$nodeclass Lab4Part1 : VisualRoutinesStateNode {
    $nodeclass FindShapes : MapBuilderNode : doStart {
        mapreq.addAllObjectColors(ellipseDataType);
    }
    $nodeclass ReportShapes : VisualRoutinesStateNode : doStart {
        NEW_SHAPEVEC(ellipse_shapes, EllipseData, select_type<EllipseData>(camShS));
        SHAPEVEC_ITERATE(ellipse_shapes, EllipseData, myellipse)
	    Point ctr = myellipse->getCentroid();
	    float semimaj = myellipse->getSemimajor() * 1.5;
	    float semimin = myellipse->getSemiminor() * 1.5;
	    AngPi orientation = myellipse->getOrientation();
	    rgb c = myellipse->getColor();
	    NEW_SHAPE(newellipse, EllipseData, new EllipseData(camShS,ctr,semimaj,semimin,orientation));
	    newellipse->setColor(c);
	    cout << "ID, Color, Area: " << myellipse->getId() << " " << myellipse->getColor() << " " << myellipse->getArea() << endl;
	END_ITERATE;
    }
    $setupmachine {
        FindShapes =C=> ReportShapes
    }
}
REGISTER_BEHAVIOR(Lab4Part1);