/* -------------------------------------------------------------------------
 * GUITriggeredRerouter - methods
 * ----------------------------------------------------------------------- */
GUITriggeredRerouter::GUITriggeredRerouter(
    const std::string& id,
    const std::vector<MSEdge*>& edges,
    SUMOReal prob, const std::string& aXMLFilename, bool off,
    SUMORTree& rtree) :
    MSTriggeredRerouter(id, edges, prob, aXMLFilename, off),
    GUIGlObject_AbstractAdd("rerouter", GLO_TRIGGER, id) {
    // add visualisation objects for edges which trigger the rerouter
    for (std::vector<MSEdge*>::const_iterator it = edges.begin(); it != edges.end(); ++it) {
        myEdgeVisualizations.push_back(new GUITriggeredRerouterEdge(dynamic_cast<GUIEdge*>(*it), this, false));
    }
    // add visualisation objects for closed edges
    for (std::vector<RerouteInterval>::const_iterator it_interval = myIntervals.begin();
            it_interval != myIntervals.end(); ++it_interval) {
        const std::vector<MSEdge*>& closed = it_interval->closed;
        for (std::vector<MSEdge*>::const_iterator it = closed.begin(); it != closed.end(); ++it) {
            myEdgeVisualizations.push_back(new GUITriggeredRerouterEdge(dynamic_cast<GUIEdge*>(*it), this, true));
        }
    }
    // register with rtree and rerouter boundary
    for (std::vector<GUITriggeredRerouterEdge*>::iterator it = myEdgeVisualizations.begin(); it != myEdgeVisualizations.end(); ++it) {
        rtree.addAdditionalGLObject(*it);
        myBoundary.add((*it)->getCenteringBoundary());
    }
}
/* -------------------------------------------------------------------------
 * GUITriggeredRerouter - methods
 * ----------------------------------------------------------------------- */
GUITriggeredRerouter::GUITriggeredRerouter(
    const std::string& id,
    const MSEdgeVector& edges,
    SUMOReal prob, const std::string& aXMLFilename, bool off,
    SUMORTree& rtree) :
    MSTriggeredRerouter(id, edges, prob, aXMLFilename, off),
    GUIGlObject_AbstractAdd("rerouter", GLO_TRIGGER, id) {
    // add visualisation objects for edges which trigger the rerouter
    for (MSEdgeVector::const_iterator it = edges.begin(); it != edges.end(); ++it) {
        myEdgeVisualizations.push_back(new GUITriggeredRerouterEdge(dynamic_cast<GUIEdge*>(*it), this, false));
        rtree.addAdditionalGLObject(myEdgeVisualizations.back());
        myBoundary.add(myEdgeVisualizations.back()->getCenteringBoundary());
    }
}