17 #ifndef GNEHierarchicalElementChildren_h 18 #define GNEHierarchicalElementChildren_h 61 const std::vector<GNEEdge*>& edgeChildren,
62 const std::vector<GNELane*>& laneChildren,
63 const std::vector<GNEShape*>& shapeChildren,
64 const std::vector<GNEAdditional*>& additionalChildren,
65 const std::vector<GNEDemandElement*>& demandElementChildren);
void sortAdditionalChildren()
sort children (used by Rerouters, VSS, TAZs...)
An special type of Attribute carrier that owns hierarchical elements.
SumoXMLTag
Numbers representing SUMO-XML - element names.
const Position & getChildPosition(const GNELane *lane)
get child position calculated in ChildConnections
void addLaneChild(GNELane *lane)
void removeEdgeChild(GNEEdge *edge)
remove edge child
virtual void updateDemandElementParent()
update parent after add or remove a child (can be reimplemented, for example used for statistics) ...
std::vector< GNEDemandElement * > myDemandElementChildren
vector with the demand elements children
void updateChildConnections()
update child connections
void removeDemandElementChild(GNEDemandElement *demandElement)
remove demand element child from this demand element
Stores the information about how to visualize structures.
const std::vector< GNEEdge * > & getEdgeChildren() const
get edge chidls
GNEAttributeCarrier * myAC
pointer to AC (needed to avoid diamond problem)
void removeShapeChild(GNEShape *shape)
remove shape child
const std::vector< GNELane * > & getLaneChildren() const
get lanes of VSS
void changeLaneChildren(GNEAdditional *elementChild, const std::string &newEdgeIDs)
change edge children of an additional
GNEHierarchicalElementChildren & operator=(const GNEHierarchicalElementChildren &)=delete
Invalidated assignment operator.
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
double getChildRotation(const GNELane *lane)
get child rotation calculated in ChildConnections
void draw(const GUIVisualizationSettings &s, const GUIGlObjectType parentType) const
draw connections between Parent and childrens
void addEdgeChild(GNEEdge *edge)
const std::vector< GNEAdditional * > & getAdditionalChildren() const
return vector of additionals that have as Parent this edge (For example, Calibrators) ...
GNEDemandElement * getPreviousemandElement(const GNEDemandElement *demandElement) const
get previous demand element to the given demand element
virtual Position getPositionInView() const =0
Returns position of hierarchical element in view.
const std::vector< GNEDemandElement * > & getDemandElementChildren() const
return vector of demand elements that have as Parent this edge (For example, Calibrators) ...
const std::vector< GNEShape * > & getShapeChildren() const
get shapes of VSS
ChildConnections myChildConnections
variable ChildConnections
void sortDemandElementChildren()
sort children (used by Rerouters, VSS, TAZs...)
virtual void updateAdditionalParent()
update parent after add or remove a child (can be reimplemented, for example used for statistics) ...
virtual std::string generateChildID(SumoXMLTag childTag)=0
gererate a new ID for an element child
bool checkDemandElementChildrenOverlapping() const
check if children are overlapped (Used by Rerouters)
std::vector< GNEEdge * > myEdgeChildren
vector with the edge children of this element
~GNEHierarchicalElementChildren()
Destructor.
const std::set< GNEDemandElement * > & getSortedDemandElementChildrenByType(SumoXMLTag tag) const
return vector of demand elements that have as Parent this edge (For example, Calibrators) ...
A point in 2D or 3D with translation and scaling methods.
virtual void updateGeometry()=0
struct for pack all variables and functions relative to connections between hierarchical element and ...
ChildConnections(GNEHierarchicalElementChildren *hierarchicalElement)
constructor
void update()
update Connection's geometry
void addAdditionalChild(GNEAdditional *additional)
std::vector< GNEAdditional * > myAdditionalChildren
vector with the additional children
std::vector< GNELane * > myLaneChildren
vector with the lane children of this element
void addShapeChild(GNEShape *shape)
std::vector< ConnectionGeometry > symbolsPositionAndRotation
position and rotation of every symbol over lane
A road/street connecting two junctions (netedit-version)
void addDemandElementChild(GNEDemandElement *demandElement)
GNEDemandElement * getNextDemandElement(const GNEDemandElement *demandElement) const
get next demand element to the given demand element
std::vector< PositionVector > connectionPositions
Matrix with the Vertex's positions of connections between parents an their children.
std::map< SumoXMLTag, std::set< GNEDemandElement * > > mySortedDemandElementChildrenByType
vector with the demand elements children sorted by type and filtered (to avoid duplicated ...
void drawChildConnections(const GUIVisualizationSettings &s, const GUIGlObjectType GLTypeParent) const
An Element which don't belongs to GNENet but has influency in the simulation.
ConnectionGeometry()
default constructor
std::vector< GNEShape * > myShapeChildren
vector with the lane children of this element
GNEHierarchicalElementChildren(GNEAttributeCarrier *AC, const std::vector< GNEEdge *> &edgeChildren, const std::vector< GNELane *> &laneChildren, const std::vector< GNEShape *> &shapeChildren, const std::vector< GNEAdditional *> &additionalChildren, const std::vector< GNEDemandElement *> &demandElementChildren)
Parameter Constructor.
void removeLaneChild(GNELane *lane)
remove lane child
GNEHierarchicalElementChildren * myHierarchicalElement
pointer to hierarchical element parent
void changeEdgeChildren(GNEAdditional *elementChild, const std::string &newEdgeIDs)
change edge children of an additional
bool checkAdditionalChildrenOverlapping() const
check if children are overlapped (Used by Rerouters)
void removeAdditionalChild(GNEAdditional *additional)
remove additional child from this additional
An Element which don't belongs to GNENet but has influency in the simulation.