![]() |
SUMO - Simulation of Urban MObility
|
A RT-tree for efficient storing of SUMO's GL-objects. More...
#include <SUMORTree.h>
Public Member Functions | |
void | add (double x, double y, double z=0) |
Makes the boundary include the given coordinate. More... | |
void | add (const Position &p) |
Makes the boundary include the given coordinate. More... | |
void | add (const Boundary &p) |
Makes the boundary include the given boundary. More... | |
void | addAdditionalGLObject (GUIGlObject *o) |
Adds an additional object (detector/shape/trigger) for visualisation. More... | |
bool | around (const Position &p, double offset=0) const |
Returns whether the boundary contains the given coordinate. More... | |
bool | crosses (const Position &p1, const Position &p2) const |
Returns whether the boundary crosses the given line. More... | |
void | flipY () |
flips ymin and ymax More... | |
Position | getCenter () const |
Returns the center of the boundary. More... | |
double | getHeight () const |
Returns the height of the boundary (y-axis) More... | |
double | getWidth () const |
Returns the width of the boudary (x-axis) More... | |
double | getZRange () const |
Returns the elevation range of the boundary (z-axis) More... | |
Boundary & | grow (double by) |
extends the boundary by the given amount More... | |
void | growHeight (double by) |
Increases the height of the boundary (y-axis) More... | |
void | growWidth (double by) |
Increases the width of the boundary (x-axis) More... | |
virtual void | Insert (const float a_min[2], const float a_max[2], GUIGlObject *const &a_dataId) |
Insert entry. More... | |
void | moveby (double x, double y, double z=0) |
Moves the boundary by the given amount. More... | |
bool | overlapsWith (const AbstractPoly &poly, double offset=0) const |
Returns whether the boundary overlaps with the given polygon. More... | |
bool | partialWithin (const AbstractPoly &poly, double offset=0) const |
Returns whether the boundary is partially within the given polygon. More... | |
virtual void | Remove (const float a_min[2], const float a_max[2], GUIGlObject *const &a_dataId) |
Remove entry. More... | |
void | removeAdditionalGLObject (GUIGlObject *o) |
Removes an additional object (detector/shape/trigger) from being visualised. More... | |
void | reset () |
Resets the boundary. More... | |
virtual int | Search (const float a_min[2], const float a_max[2], const GUIVisualizationSettings &c) const |
Find all within search rectangle. More... | |
void | set (double xmin, double ymin, double xmax, double ymax) |
Sets the boundary to the given values. More... | |
SUMORTree () | |
Constructor. More... | |
double | xmax () const |
Returns maximum x-coordinate. More... | |
double | xmin () const |
Returns minimum x-coordinate. More... | |
double | ymax () const |
Returns maximum y-coordinate. More... | |
double | ymin () const |
Returns minimum y-coordinate. More... | |
double | zmax () const |
Returns maximum z-coordinate. More... | |
double | zmin () const |
Returns minimum z-coordinate. More... | |
virtual | ~SUMORTree () |
Destructor. More... | |
Protected Attributes | |
MFXMutex | myLock |
A mutex avoiding parallel change and traversal of the tree. More... | |
A RT-tree for efficient storing of SUMO's GL-objects.
This class specialises the used RT-tree implementation from "rttree.h" and extends it by a mutex for avoiding parallel change and traversal of the tree.
Definition at line 74 of file SUMORTree.h.
|
inline |
|
inlinevirtual |
Destructor.
Definition at line 83 of file SUMORTree.h.
|
inherited |
Makes the boundary include the given coordinate.
Definition at line 86 of file Boundary.cpp.
References Boundary::myWasInitialised, Boundary::myXmax, Boundary::myXmin, Boundary::myYmax, Boundary::myYmin, Boundary::myZmax, and Boundary::myZmin.
Referenced by Boundary::add(), NIVissimConnectionCluster::NodeSubCluster::add(), NIVissimConnectionCluster::add(), Boundary::Boundary(), GUIDanielPerspectiveChanger::centerTo(), NBNetBuilder::compute(), GNENet::computeAndUpdate(), NIVissimDisturbance::computeBounding(), NIVissimConnection::computeBounding(), NBNetBuilder::computeSingleNode(), GNEEdge::getBoundary(), GUIEdge::getBoundary(), PositionVector::getBoxBoundary(), MSDevice_BTsender::VehicleInformation::getBoxBoundary(), GUITrafficLightLogicWrapper::getCenteringBoundary(), GUIContainer::getCenteringBoundary(), GUIPolygon::getCenteringBoundary(), GUIPointOfInterest::getCenteringBoundary(), GUIPerson::getCenteringBoundary(), GUIBaseVehicle::getCenteringBoundary(), GUILane::getCenteringBoundary(), GUISUMOAbstractView::getObjectAtPosition(), GUISUMOAbstractView::getObjectsAtPosition(), GNENet::GNENet(), GUICalibrator::GUICalibrator(), GUILaneSpeedTrigger::GUILaneSpeedTrigger(), GUITriggeredRerouter::GUITriggeredRerouter(), GUITriggeredRerouter::GUITriggeredRerouterEdge::GUITriggeredRerouterEdge(), GUINet::initGUIStructures(), NBHeightMapper::loadShapeFile(), NBHeightMapper::loadTiff(), GNEViewNet::mergeJunctions(), GUITriggeredRerouter::myEndElement(), GUIMEInductLoop::MyWrapper::MyWrapper(), GUIInstantInductLoop::MyWrapper::MyWrapper(), GUIE3Collector::MyWrapper::MyWrapper(), GUIInductLoop::MyWrapper::MyWrapper(), GNEViewNet::onLeftBtnRelease(), NIVissimConnectionCluster::recomputeBoundary(), GNENet::registerEdge(), GNENet::registerJunction(), GUIDanielPerspectiveChanger::setViewport(), GNEJunction::updateGeometry(), and GeoConvHelper::x2cartesian().
|
inherited |
Makes the boundary include the given coordinate.
Definition at line 107 of file Boundary.cpp.
References Boundary::add(), Position::x(), Position::y(), and Position::z().
|
inherited |
Makes the boundary include the given boundary.
Definition at line 113 of file Boundary.cpp.
References Boundary::add(), Boundary::xmax(), Boundary::xmin(), Boundary::ymax(), Boundary::ymin(), Boundary::zmax(), and Boundary::zmin().
|
inline |
Adds an additional object (detector/shape/trigger) for visualisation.
[in] | o | The object to add |
Definition at line 129 of file SUMORTree.h.
References GUIGlObject::getCenteringBoundary(), Insert(), myLock, Boundary::xmax(), Boundary::xmin(), Boundary::ymax(), and Boundary::ymin().
Referenced by GUIShapeContainer::addPOI(), GUIShapeContainer::addPolygon(), GNETLSEditorFrame::buildIinternalLanes(), GUINet::createTLWrapper(), GUITriggeredRerouter::GUITriggeredRerouter(), GUINet::initGUIStructures(), GNENet::insertAdditional(), GUIShapeContainer::movePOI(), GNEViewNet::onCmdNodeShape(), GNENet::refreshAdditional(), GNENet::refreshElement(), GNENet::registerEdge(), GNENet::registerJunction(), and GUIShapeContainer::reshapePolygon().
|
virtualinherited |
Returns whether the boundary contains the given coordinate.
Implements AbstractPoly.
Definition at line 180 of file Boundary.cpp.
References Boundary::myXmax, Boundary::myXmin, Boundary::myYmax, Boundary::myYmin, Boundary::myZmax, Boundary::myZmin, Position::x(), Position::y(), and Position::z().
Referenced by PCPolyContainer::add(), NIVissimConnectionCluster::around(), NBHeightMapper::getZ(), and NIVissimConnectionCluster::recheckEdges().
Returns whether the boundary crosses the given line.
Implements AbstractPoly.
Definition at line 210 of file Boundary.cpp.
References PositionVector::intersects(), Boundary::myXmax, Boundary::myXmin, Boundary::myYmax, and Boundary::myYmin.
|
inherited |
flips ymin and ymax
Definition at line 256 of file Boundary.cpp.
References Boundary::myYmax, and Boundary::myYmin.
Referenced by GeoConvHelper::computeFinal().
|
inherited |
Returns the center of the boundary.
Definition at line 120 of file Boundary.cpp.
References Boundary::myXmax, Boundary::myXmin, Boundary::myYmax, Boundary::myYmin, Boundary::myZmax, and Boundary::myZmin.
Referenced by GUISUMOAbstractView::centerTo(), GUIDanielPerspectiveChanger::getXPos(), GUIDanielPerspectiveChanger::getYPos(), NIVissimConnectionCluster::liesOnSameEdgesEnd(), GUIBaseVehicle::setFunctionalColor(), and GUIDanielPerspectiveChanger::zoom().
|
inherited |
Returns the height of the boundary (y-axis)
Definition at line 168 of file Boundary.cpp.
References Boundary::myYmax, and Boundary::myYmin.
Referenced by GUISUMOAbstractView::applyGLTransform(), GUIPolygon::drawGL(), GUISUMOAbstractView::getGridHeight(), GNENet::GNENet(), GUIJunctionWrapper::GUIJunctionWrapper(), GUINet::initGUIStructures(), GUIDanielPerspectiveChanger::onKeyPress(), GUIPerspectiveChanger::patchedViewPort(), GUISUMOAbstractView::screenPos2NetPos(), and GNEJunction::updateGeometry().
|
inherited |
Returns the width of the boudary (x-axis)
Definition at line 162 of file Boundary.cpp.
References Boundary::myXmax, and Boundary::myXmin.
Referenced by GUISUMOAbstractView::applyGLTransform(), GUIPolygon::drawGL(), GUISUMOAbstractView::getGridWidth(), GUIDanielPerspectiveChanger::getZoom(), GUIDanielPerspectiveChanger::getZPos(), GNENet::GNENet(), GUIJunctionWrapper::GUIJunctionWrapper(), GUINet::initGUIStructures(), GUISUMOAbstractView::m2p(), GUIDanielPerspectiveChanger::onKeyPress(), GUISUMOAbstractView::p2m(), GUIPerspectiveChanger::patchedViewPort(), GUISUMOAbstractView::screenPos2NetPos(), and GNEJunction::updateGeometry().
|
inherited |
Returns the elevation range of the boundary (z-axis)
Definition at line 174 of file Boundary.cpp.
References Boundary::myZmax, and Boundary::myZmin.
Referenced by NBNetBuilder::compute(), and NBNetBuilder::computeSingleNode().
|
inherited |
extends the boundary by the given amount
The method returns a reference to the instance for further use
Definition at line 234 of file Boundary.cpp.
References Boundary::myXmax, Boundary::myXmin, Boundary::myYmax, and Boundary::myYmin.
Referenced by GUIDanielPerspectiveChanger::centerTo(), NBEdgeCont::checkOverlap(), TraCIServer::collectObjectsInRange(), MSDevice_BTreceiver::BTreceiverUpdate::execute(), MSLane::fill(), GUIEdge::getBoundary(), GNEEdge::getBoundary(), GNEInternalLane::getCenteringBoundary(), GUITrafficLightLogicWrapper::getCenteringBoundary(), GNEJunction::getCenteringBoundary(), GNECrossing::getCenteringBoundary(), GUIContainer::getCenteringBoundary(), GUIPolygon::getCenteringBoundary(), GUIInstantInductLoop::MyWrapper::getCenteringBoundary(), GUILaneSpeedTrigger::getCenteringBoundary(), GUICalibrator::getCenteringBoundary(), GUIPointOfInterest::getCenteringBoundary(), GUIPerson::getCenteringBoundary(), GUIMEInductLoop::MyWrapper::getCenteringBoundary(), GUIJunctionWrapper::getCenteringBoundary(), GNEEdge::getCenteringBoundary(), GNELane::getCenteringBoundary(), GUIE3Collector::MyWrapper::getCenteringBoundary(), GUITriggeredRerouter::getCenteringBoundary(), GUIChargingStation::getCenteringBoundary(), GUIContainerStop::getCenteringBoundary(), GUIBusStop::getCenteringBoundary(), GUIParkingArea::getCenteringBoundary(), GUIEdge::getCenteringBoundary(), GUIE2Collector::MyWrapper::getCenteringBoundary(), GUIBaseVehicle::getCenteringBoundary(), GUIInductLoop::MyWrapper::getCenteringBoundary(), GUITriggeredRerouter::GUITriggeredRerouterEdge::getCenteringBoundary(), GNEAdditional::getCenteringBoundary(), GUILane::getCenteringBoundary(), GUISUMOAbstractView::getObjectAtPosition(), GUISUMOAbstractView::getObjectsAtPosition(), NBEdgeCont::ignoreFilterMatch(), GUINet::initGUIStructures(), and GNEViewNet::mergeJunctions().
|
inherited |
Increases the height of the boundary (y-axis)
Definition at line 250 of file Boundary.cpp.
References Boundary::myYmax, and Boundary::myYmin.
Referenced by GUIPointOfInterest::getCenteringBoundary(), GUIPerspectiveChanger::patchedViewPort(), and GUIDanielPerspectiveChanger::setViewport().
|
inherited |
Increases the width of the boundary (x-axis)
Definition at line 243 of file Boundary.cpp.
References Boundary::myXmax, and Boundary::myXmin.
Referenced by GUIPointOfInterest::getCenteringBoundary(), GUIPerspectiveChanger::patchedViewPort(), and GUIDanielPerspectiveChanger::setViewport().
|
inlinevirtual |
Insert entry.
a_min | Min of bounding rect |
a_max | Max of bounding rect |
a_dataId | Positive Id of data. Maybe zero, but negative numbers not allowed. |
Reimplemented in LayeredRTree.
Definition at line 93 of file SUMORTree.h.
References myLock.
Referenced by addAdditionalGLObject().
|
inherited |
Moves the boundary by the given amount.
Definition at line 283 of file Boundary.cpp.
References Boundary::myXmax, Boundary::myXmin, Boundary::myYmax, Boundary::myYmin, Boundary::myZmax, and Boundary::myZmin.
Referenced by GUIDanielPerspectiveChanger::centerTo(), GUIDanielPerspectiveChanger::move(), GeoConvHelper::moveConvertedBy(), GUIDanielPerspectiveChanger::onKeyPress(), and GNEJunction::setPosition().
|
virtualinherited |
Returns whether the boundary overlaps with the given polygon.
Implements AbstractPoly.
Definition at line 189 of file Boundary.cpp.
References AbstractPoly::crosses(), Boundary::myXmax, Boundary::myXmin, Boundary::myYmax, Boundary::myYmin, AbstractPoly::partialWithin(), and Boundary::partialWithin().
Referenced by NBEdgeCont::checkOverlap(), NIVissimBoundedClusterObject::crosses(), NBEdgeCont::ignoreFilterMatch(), NIVissimConnectionCluster::overlapsWith(), and NIVissimConnectionCluster::NodeSubCluster::overlapsWith().
|
virtualinherited |
Returns whether the boundary is partially within the given polygon.
Implements AbstractPoly.
Definition at line 224 of file Boundary.cpp.
References AbstractPoly::around(), Boundary::myXmax, Boundary::myXmin, Boundary::myYmax, and Boundary::myYmin.
Referenced by PCPolyContainer::add(), and Boundary::overlapsWith().
|
inlinevirtual |
Remove entry.
a_min | Min of bounding rect |
a_max | Max of bounding rect |
a_dataId | Positive Id of data. Maybe zero, but negative numbers not allowed. |
Reimplemented in LayeredRTree.
Definition at line 105 of file SUMORTree.h.
References myLock.
Referenced by removeAdditionalGLObject().
|
inline |
Removes an additional object (detector/shape/trigger) from being visualised.
[in] | o | The object to remove |
Definition at line 141 of file SUMORTree.h.
References GUIGlObject::getCenteringBoundary(), myLock, Remove(), Boundary::xmax(), Boundary::xmin(), Boundary::ymax(), and Boundary::ymin().
Referenced by GNETLSEditorFrame::buildIinternalLanes(), GNENet::deleteAdditional(), GNENet::deleteSingleEdge(), GNENet::deleteSingleJunction(), GUIShapeContainer::movePOI(), GNEViewNet::onCmdNodeShape(), GNENet::refreshAdditional(), GNENet::refreshElement(), GNEViewNet::removeCurrentPoly(), GUIShapeContainer::removePOI(), GUIShapeContainer::removePolygon(), and GUIShapeContainer::reshapePolygon().
|
inherited |
Resets the boundary.
Definition at line 74 of file Boundary.cpp.
References Boundary::myWasInitialised, Boundary::myXmax, Boundary::myXmin, Boundary::myYmax, Boundary::myYmin, Boundary::myZmax, and Boundary::myZmin.
Referenced by NBHeightMapper::clearData(), and GNENet::computeAndUpdate().
|
inlinevirtual |
Find all within search rectangle.
a_min | Min of search bounding rect |
a_max | Max of search bounding rect |
a_searchResult | Search result array. Caller should set grow size. Function will reset, not append to array. |
a_resultCallback | Callback function to return result. Callback should return 'true' to continue searching |
a_context | User context to pass as parameter to a_resultCallback |
Reimplemented in LayeredRTree.
Definition at line 120 of file SUMORTree.h.
References myLock.
Referenced by GUIViewTraffic::doPaintGL(), GNEViewNet::doPaintGL(), and GUISUMOAbstractView::makeSnapshot().
|
inherited |
Sets the boundary to the given values.
Definition at line 274 of file Boundary.cpp.
References Boundary::myXmax, Boundary::myXmin, Boundary::myYmax, Boundary::myYmin, Boundary::xmax(), Boundary::xmin(), Boundary::ymax(), and Boundary::ymin().
Referenced by TraCIServer::readTypeCheckingBoundary().
|
inherited |
Returns maximum x-coordinate.
Definition at line 132 of file Boundary.cpp.
References Boundary::myXmax.
Referenced by Boundary::add(), NIVissimConnectionCluster::add(), addAdditionalGLObject(), NBHeightMapper::addTriangle(), NIVissimConnectionCluster::around(), NIVissimConnection::buildNodeClusters(), GUIDanielPerspectiveChanger::changeCanvasSizeLeft(), TraCIServer::collectObjectsInRange(), NBNetBuilder::compute(), NIVissimDisturbance::computeBounding(), NIVissimBoundedClusterObject::crosses(), GeomHelper::crossPoint(), GUIViewTraffic::doPaintGL(), GNEViewNet::doPaintGL(), MSDevice_BTreceiver::BTreceiverUpdate::execute(), MSLane::fill(), NIVissimConnection::getBoundingBox(), NIVissimConnectionCluster::getPositionForEdge(), TraCIServerAPI_Junction::getTree(), TraCIServerAPI_Polygon::getTree(), NBHeightMapper::getZ(), GUINet::initGUIStructures(), main(), GUISUMOAbstractView::makeSnapshot(), NIVissimConnectionCluster::NIVissimConnectionCluster(), NIVissimConnectionCluster::overlapsWith(), NIVissimConnectionCluster::NodeSubCluster::overlapsWith(), GUISUMOAbstractView::paintGLGrid(), TraCIServerAPI_GUI::processGet(), TraCIServerAPI_Simulation::processGet(), NIVissimConnectionCluster::recheckEdges(), NIVissimConnectionCluster::recomputeBoundary(), removeAdditionalGLObject(), Boundary::set(), GUIBaseVehicle::setFunctionalColor(), GNEPoly::simplifyShape(), BinaryFormatter::writeAttr(), NWWriter_OpenDrive::writeNetwork(), NWWriter_DlrNavteq::writeNodesUnsplitted(), and GUIDanielPerspectiveChanger::zoom().
|
inherited |
Returns minimum x-coordinate.
Definition at line 126 of file Boundary.cpp.
References Boundary::myXmin.
Referenced by Boundary::add(), NIVissimConnectionCluster::add(), addAdditionalGLObject(), NBHeightMapper::addTriangle(), GUISUMOAbstractView::applyGLTransform(), NIVissimConnectionCluster::around(), NIVissimConnection::buildNodeClusters(), GUIDanielPerspectiveChanger::changeCanvasSizeLeft(), TraCIServer::collectObjectsInRange(), NBNetBuilder::compute(), NIVissimDisturbance::computeBounding(), NIVissimBoundedClusterObject::crosses(), GeomHelper::crossPoint(), GUIViewTraffic::doPaintGL(), GNEViewNet::doPaintGL(), MSDevice_BTreceiver::BTreceiverUpdate::execute(), MSLane::fill(), NIVissimConnection::getBoundingBox(), NIVissimConnectionCluster::getPositionForEdge(), TraCIServerAPI_Junction::getTree(), TraCIServerAPI_Polygon::getTree(), NBHeightMapper::getZ(), GUINet::initGUIStructures(), main(), GUISUMOAbstractView::makeSnapshot(), NBNetBuilder::moveToOrigin(), NIVissimConnectionCluster::NIVissimConnectionCluster(), NIVissimConnectionCluster::overlapsWith(), NIVissimConnectionCluster::NodeSubCluster::overlapsWith(), GUISUMOAbstractView::paintGLGrid(), TraCIServerAPI_GUI::processGet(), TraCIServerAPI_Simulation::processGet(), NIVissimConnectionCluster::recheckEdges(), NIVissimConnectionCluster::recomputeBoundary(), removeAdditionalGLObject(), GUISUMOAbstractView::screenPos2NetPos(), Boundary::set(), GUIBaseVehicle::setFunctionalColor(), GNEPoly::simplifyShape(), BinaryFormatter::writeAttr(), NWWriter_OpenDrive::writeNetwork(), NWWriter_DlrNavteq::writeNodesUnsplitted(), and GUIDanielPerspectiveChanger::zoom().
|
inherited |
Returns maximum y-coordinate.
Definition at line 144 of file Boundary.cpp.
References Boundary::myYmax.
Referenced by Boundary::add(), addAdditionalGLObject(), NBHeightMapper::addTriangle(), GUIDanielPerspectiveChanger::changeCanvasSizeLeft(), TraCIServer::collectObjectsInRange(), NBNetBuilder::compute(), GeomHelper::crossPoint(), GUIViewTraffic::doPaintGL(), GNEViewNet::doPaintGL(), MSDevice_BTreceiver::BTreceiverUpdate::execute(), MSLane::fill(), TraCIServerAPI_Junction::getTree(), TraCIServerAPI_Polygon::getTree(), NBHeightMapper::getZ(), GUINet::initGUIStructures(), main(), GUISUMOAbstractView::makeSnapshot(), NBNetBuilder::moveToOrigin(), GUISUMOAbstractView::paintGLGrid(), TraCIServerAPI_GUI::processGet(), TraCIServerAPI_Simulation::processGet(), removeAdditionalGLObject(), Boundary::set(), GUIBaseVehicle::setFunctionalColor(), GNEPoly::simplifyShape(), BinaryFormatter::writeAttr(), NWWriter_OpenDrive::writeNetwork(), NWWriter_DlrNavteq::writeNodesUnsplitted(), and GUIDanielPerspectiveChanger::zoom().
|
inherited |
Returns minimum y-coordinate.
Definition at line 138 of file Boundary.cpp.
References Boundary::myYmin.
Referenced by Boundary::add(), addAdditionalGLObject(), NBHeightMapper::addTriangle(), GUISUMOAbstractView::applyGLTransform(), GUIDanielPerspectiveChanger::changeCanvasSizeLeft(), TraCIServer::collectObjectsInRange(), NBNetBuilder::compute(), GeomHelper::crossPoint(), GUIViewTraffic::doPaintGL(), GNEViewNet::doPaintGL(), MSDevice_BTreceiver::BTreceiverUpdate::execute(), MSLane::fill(), TraCIServerAPI_Junction::getTree(), TraCIServerAPI_Polygon::getTree(), GNENet::GNENet(), GUINet::initGUIStructures(), main(), GUISUMOAbstractView::makeSnapshot(), NBNetBuilder::moveToOrigin(), GUISUMOAbstractView::paintGLGrid(), TraCIServerAPI_GUI::processGet(), TraCIServerAPI_Simulation::processGet(), removeAdditionalGLObject(), GUISUMOAbstractView::screenPos2NetPos(), Boundary::set(), GUIBaseVehicle::setFunctionalColor(), GNEPoly::simplifyShape(), BinaryFormatter::writeAttr(), NWWriter_OpenDrive::writeNetwork(), NWWriter_DlrNavteq::writeNodesUnsplitted(), and GUIDanielPerspectiveChanger::zoom().
|
inherited |
Returns maximum z-coordinate.
Definition at line 156 of file Boundary.cpp.
References Boundary::myZmax.
Referenced by Boundary::add().
|
inherited |
Returns minimum z-coordinate.
Definition at line 150 of file Boundary.cpp.
References Boundary::myZmin.
Referenced by Boundary::add().
|
mutableprotected |
A mutex avoiding parallel change and traversal of the tree.
Definition at line 152 of file SUMORTree.h.
Referenced by addAdditionalGLObject(), Insert(), Remove(), removeAdditionalGLObject(), and Search().