from dataclasses import dataclass
from typing import Tuple
from simulation.utils.road.sections.road_element import RoadElement, RoadElementRect
from . import ID
ID_NS = 200
[docs]@dataclass
class SurfaceMarking:
""""""
START_LINE = (ID.register(ID_NS), "Startline")
ZEBRA_CROSSING = (ID.register(ID_NS), "CrosswalkLines")
BLOCKED_AREA = (ID.register(ID_NS), "Blockedarea")
PARKING_SPOT_X = (ID.register(ID_NS), "ParkingspotX")
TRAFFIC_ISLAND_BLOCKED = (ID.register(ID_NS), "Trafficisland")
ZEBRA_LINES = (ID.register(ID_NS), "CrosswalkNoLines")
RIGHT_TURN_MARKING = (ID.register(ID_NS), "RightArrow")
LEFT_TURN_MARKING = (ID.register(ID_NS), "LeftArrow")
STOP_LINE = (ID.register(ID_NS), "Stopline")
GIVE_WAY_LINE = (ID.register(ID_NS), "GiveWayLine")
ZONE_10_START = (ID.register(ID_NS), "ZONE_10_START")
ZONE_20_START = (ID.register(ID_NS), "ZONE_20_START")
ZONE_30_START = (ID.register(ID_NS), "ZONE_30_START")
ZONE_40_START = (ID.register(ID_NS), "ZONE_40_START")
ZONE_50_START = (ID.register(ID_NS), "ZONE_50_START")
ZONE_60_START = (ID.register(ID_NS), "ZONE_60_START")
ZONE_70_START = (ID.register(ID_NS), "ZONE_70_START")
ZONE_80_START = (ID.register(ID_NS), "ZONE_80_START")
ZONE_90_START = (ID.register(ID_NS), "ZONE_90_START")
ZONE_10_END = (ID.register(ID_NS), "ZONE_10_END")
ZONE_20_END = (ID.register(ID_NS), "ZONE_20_END")
ZONE_30_END = (ID.register(ID_NS), "ZONE_30_END")
ZONE_40_END = (ID.register(ID_NS), "ZONE_40_END")
ZONE_50_END = (ID.register(ID_NS), "ZONE_50_END")
ZONE_60_END = (ID.register(ID_NS), "ZONE_60_END")
ZONE_70_END = (ID.register(ID_NS), "ZONE_70_END")
ZONE_80_END = (ID.register(ID_NS), "ZONE_80_END")
ZONE_90_END = (ID.register(ID_NS), "ZONE_90_END")
kind: Tuple[int, str] = None
"""Kind of the surface marking."""
def __post_init__(self):
super().__post_init__()
assert self.kind is not None, "Kind of SurfaceMarking not specified."
[docs]@dataclass
class SurfaceMarkingPoly(RoadElement, SurfaceMarking):
pass
[docs]@dataclass
class SurfaceMarkingRect(RoadElementRect, SurfaceMarking):
def __init__(
self,
kind: Tuple[int, str],
arc_length: float,
y: float = -0.5,
depth: float = 0.4,
width: float = 0.4,
angle=0,
normalize_x: bool = True,
):
self.kind = kind
super().__init__(
arc_length=arc_length,
y=y,
width=width,
depth=depth,
angle=angle,
normalize_x=normalize_x,
)