/**
 * @author Matt Dee (medee)
 * @author Alex Franchuk (afranchu)
 */
#include "Behaviors/StateMachine.h"

$nodeclass VR {
    $nodeclass GetLine : MapBuilderNode(MapBuilderRequest::worldMap) : doStart {
        mapreq.addAllObjectColors(lineDataType);
    }

    $nodeclass MapLine : doStart {
        NEW_SHAPEVEC(lines, LineData,
            select_type<LineData>(worldShS));

        if (lines.size() < 0) {
            cout << "No lines found." << endl;
        }
        else {
            int idx = -1;
            EndPoint first, second;
            do {
                idx++;
                if (idx == lines.size())
                    break;
                first = lines[idx]->firstPt();
                second = lines[idx]->secondPt();
            } while ((!first.isValid() || !second.isValid()));

            if (idx == lines.size()) {
                cout << "No lines with valid endpoints" << endl;
            }
            else {
                NEW_SHAPE(ellipse1, EllipseData, new EllipseData(worldShS, first));
                NEW_SHAPE(ellipse2, EllipseData, new EllipseData(worldShS, second));
                VRmixin::drawShapes.push_back(ellipse1);
                VRmixin::drawShapes.push_back(ellipse2);
            }
        }

    }

    $setupmachine {
        GetLine =MAP=> MapLine
    }

}

REGISTER_BEHAVIOR(VR);
