Skip to content

Commit 560d85c

Browse files
feat: advance SumoGUIMac alpha parity and add landing page
- expand TraCI/domain support with typed helpers, subscription parsing, version warnings, lane occupancy, vehicle emissions/color data, and route metadata - improve network parsing with additional SUMO config files, polygons, POIs, richer bounds handling, spatial index coverage, and parser benchmarks - upgrade the Metal renderer with background decals, polygon/POI overlays, route hover/selection highlights, multi-selection overlays, vehicle/lane LOD culling, and heading-aware camera rotation - add SUMO GUI-style visualization settings for lanes, vehicles, junctions, palettes, legends, and XML import/export - add inspector parity features including persistent edge/vehicle selections, context menus, route copy/select actions, breakpoints, tracker charts, vehicle follow, and rotate-with-heading mode - add a FlowDemo SUMO scenario and root index.html landing page for Cloudflare Pages - broaden tests for TraCI parsing, SUMO integration, network parsing, renderer LOD, selection, routes, trackers, breakpoints, recent files, and viewport rotation - update the checklist and handoff notes through Day 6 alpha inspection tooling
1 parent 45e477d commit 560d85c

34 files changed

Lines changed: 5043 additions & 224 deletions

‎Examples/FlowDemo/README.md‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# FlowDemo
2+
3+
A small four-way traffic-light scenario for exercising SumoGUIMac with steady traffic flow.
4+
5+
Open this file in SumoGUIMac:
6+
7+
```sh
8+
Examples/FlowDemo/flowdemo.sumocfg
9+
```
10+
11+
The route file defines several `<flow>` entries with cars and buses crossing the intersection from different approaches. The network is generated from `flowdemo.nod.xml` and `flowdemo.edg.xml` using SUMO `netconvert`.
12+
13+
To regenerate the network:
14+
15+
```sh
16+
netconvert --node-files flowdemo.nod.xml --edge-files flowdemo.edg.xml --output-file flowdemo.net.xml --tls.guess true --no-turnarounds true
17+
```

‎Examples/FlowDemo/flowdemo.edg.xml‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<edges>
3+
<edge id="west_to_center" from="west" to="center" priority="3" numLanes="2" speed="13.89"/>
4+
<edge id="center_to_east" from="center" to="east" priority="3" numLanes="2" speed="13.89"/>
5+
<edge id="east_to_center" from="east" to="center" priority="3" numLanes="2" speed="13.89"/>
6+
<edge id="center_to_west" from="center" to="west" priority="3" numLanes="2" speed="13.89"/>
7+
<edge id="south_to_center" from="south" to="center" priority="3" numLanes="2" speed="13.89"/>
8+
<edge id="center_to_north" from="center" to="north" priority="3" numLanes="2" speed="13.89"/>
9+
<edge id="north_to_center" from="north" to="center" priority="3" numLanes="2" speed="13.89"/>
10+
<edge id="center_to_south" from="center" to="south" priority="3" numLanes="2" speed="13.89"/>
11+
</edges>

‎Examples/FlowDemo/flowdemo.net.xml‎

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<!-- generated on 2026-05-03T13:40:57.374818+00:00 by Eclipse SUMO netconvert 1.26.0
4+
<netconvertConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/netconvertConfiguration.xsd">
5+
6+
<input>
7+
<node-files value="flowdemo.nod.xml"/>
8+
<edge-files value="flowdemo.edg.xml"/>
9+
</input>
10+
11+
<output>
12+
<output-file value="flowdemo.net.xml"/>
13+
</output>
14+
15+
<tls_building>
16+
<tls.guess value="true"/>
17+
</tls_building>
18+
19+
<junctions>
20+
<no-turnarounds value="true"/>
21+
</junctions>
22+
23+
</netconvertConfiguration>
24+
-->
25+
26+
<net version="1.20" junctionCornerDetail="5" limitTurnSpeed="5.50" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/net_file.xsd">
27+
28+
<location netOffset="500.00,500.00" convBoundary="0.00,0.00,1000.00,1000.00" origBoundary="-500.00,-500.00,500.00,500.00" projParameter="!"/>
29+
30+
<edge id=":center_0" function="internal">
31+
<lane id=":center_0_0" index="0" speed="6.51" length="9.03" shape="495.20,510.40 494.85,507.95 493.80,506.20 492.05,505.15 489.60,504.80"/>
32+
</edge>
33+
<edge id=":center_1" function="internal">
34+
<lane id=":center_1_0" index="0" speed="13.89" length="20.80" shape="495.20,510.40 495.20,489.60"/>
35+
<lane id=":center_1_1" index="1" speed="13.89" length="20.80" shape="498.40,510.40 498.40,489.60"/>
36+
</edge>
37+
<edge id=":center_3" function="internal">
38+
<lane id=":center_3_0" index="0" speed="9.26" length="5.01" shape="498.40,510.40 499.11,505.44"/>
39+
</edge>
40+
<edge id=":center_16" function="internal">
41+
<lane id=":center_16_0" index="0" speed="9.26" length="14.34" shape="499.11,505.44 499.15,505.15 501.40,501.40 505.15,499.15 510.40,498.40"/>
42+
</edge>
43+
<edge id=":center_4" function="internal">
44+
<lane id=":center_4_0" index="0" speed="6.51" length="9.03" shape="510.40,504.80 507.95,505.15 506.20,506.20 505.15,507.95 504.80,510.40"/>
45+
</edge>
46+
<edge id=":center_5" function="internal">
47+
<lane id=":center_5_0" index="0" speed="13.89" length="20.80" shape="510.40,504.80 489.60,504.80"/>
48+
<lane id=":center_5_1" index="1" speed="13.89" length="20.80" shape="510.40,501.60 489.60,501.60"/>
49+
</edge>
50+
<edge id=":center_7" function="internal">
51+
<lane id=":center_7_0" index="0" speed="9.26" length="5.01" shape="510.40,501.60 505.44,500.89"/>
52+
</edge>
53+
<edge id=":center_17" function="internal">
54+
<lane id=":center_17_0" index="0" speed="9.26" length="14.34" shape="505.44,500.89 505.15,500.85 501.40,498.60 499.15,494.85 498.40,489.60"/>
55+
</edge>
56+
<edge id=":center_8" function="internal">
57+
<lane id=":center_8_0" index="0" speed="6.51" length="9.03" shape="504.80,489.60 505.15,492.05 506.20,493.80 507.95,494.85 510.40,495.20"/>
58+
</edge>
59+
<edge id=":center_9" function="internal">
60+
<lane id=":center_9_0" index="0" speed="13.89" length="20.80" shape="504.80,489.60 504.80,510.40"/>
61+
<lane id=":center_9_1" index="1" speed="13.89" length="20.80" shape="501.60,489.60 501.60,510.40"/>
62+
</edge>
63+
<edge id=":center_11" function="internal">
64+
<lane id=":center_11_0" index="0" speed="9.26" length="5.01" shape="501.60,489.60 500.89,494.56"/>
65+
</edge>
66+
<edge id=":center_18" function="internal">
67+
<lane id=":center_18_0" index="0" speed="9.26" length="14.34" shape="500.89,494.56 500.85,494.85 498.60,498.60 494.85,500.85 489.60,501.60"/>
68+
</edge>
69+
<edge id=":center_12" function="internal">
70+
<lane id=":center_12_0" index="0" speed="6.51" length="9.03" shape="489.60,495.20 492.05,494.85 493.80,493.80 494.85,492.05 495.20,489.60"/>
71+
</edge>
72+
<edge id=":center_13" function="internal">
73+
<lane id=":center_13_0" index="0" speed="13.89" length="20.80" shape="489.60,495.20 510.40,495.20"/>
74+
<lane id=":center_13_1" index="1" speed="13.89" length="20.80" shape="489.60,498.40 510.40,498.40"/>
75+
</edge>
76+
<edge id=":center_15" function="internal">
77+
<lane id=":center_15_0" index="0" speed="9.26" length="5.01" shape="489.60,498.40 494.56,499.11"/>
78+
</edge>
79+
<edge id=":center_19" function="internal">
80+
<lane id=":center_19_0" index="0" speed="9.26" length="14.34" shape="494.56,499.11 494.85,499.15 498.60,501.40 500.85,505.15 501.60,510.40"/>
81+
</edge>
82+
83+
<edge id="center_to_east" from="center" to="east" priority="3">
84+
<lane id="center_to_east_0" index="0" speed="13.89" length="489.60" shape="510.40,495.20 1000.00,495.20"/>
85+
<lane id="center_to_east_1" index="1" speed="13.89" length="489.60" shape="510.40,498.40 1000.00,498.40"/>
86+
</edge>
87+
<edge id="center_to_north" from="center" to="north" priority="3">
88+
<lane id="center_to_north_0" index="0" speed="13.89" length="489.60" shape="504.80,510.40 504.80,1000.00"/>
89+
<lane id="center_to_north_1" index="1" speed="13.89" length="489.60" shape="501.60,510.40 501.60,1000.00"/>
90+
</edge>
91+
<edge id="center_to_south" from="center" to="south" priority="3">
92+
<lane id="center_to_south_0" index="0" speed="13.89" length="489.60" shape="495.20,489.60 495.20,-0.00"/>
93+
<lane id="center_to_south_1" index="1" speed="13.89" length="489.60" shape="498.40,489.60 498.40,-0.00"/>
94+
</edge>
95+
<edge id="center_to_west" from="center" to="west" priority="3">
96+
<lane id="center_to_west_0" index="0" speed="13.89" length="489.60" shape="489.60,504.80 -0.00,504.80"/>
97+
<lane id="center_to_west_1" index="1" speed="13.89" length="489.60" shape="489.60,501.60 -0.00,501.60"/>
98+
</edge>
99+
<edge id="east_to_center" from="east" to="center" priority="3">
100+
<lane id="east_to_center_0" index="0" speed="13.89" length="489.60" shape="1000.00,504.80 510.40,504.80"/>
101+
<lane id="east_to_center_1" index="1" speed="13.89" length="489.60" shape="1000.00,501.60 510.40,501.60"/>
102+
</edge>
103+
<edge id="north_to_center" from="north" to="center" priority="3">
104+
<lane id="north_to_center_0" index="0" speed="13.89" length="489.60" shape="495.20,1000.00 495.20,510.40"/>
105+
<lane id="north_to_center_1" index="1" speed="13.89" length="489.60" shape="498.40,1000.00 498.40,510.40"/>
106+
</edge>
107+
<edge id="south_to_center" from="south" to="center" priority="3">
108+
<lane id="south_to_center_0" index="0" speed="13.89" length="489.60" shape="504.80,-0.00 504.80,489.60"/>
109+
<lane id="south_to_center_1" index="1" speed="13.89" length="489.60" shape="501.60,-0.00 501.60,489.60"/>
110+
</edge>
111+
<edge id="west_to_center" from="west" to="center" priority="3">
112+
<lane id="west_to_center_0" index="0" speed="13.89" length="489.60" shape="-0.00,495.20 489.60,495.20"/>
113+
<lane id="west_to_center_1" index="1" speed="13.89" length="489.60" shape="-0.00,498.40 489.60,498.40"/>
114+
</edge>
115+
116+
<tlLogic id="center" type="static" programID="0" offset="0">
117+
<phase duration="42" state="GGGgrrrrGGGgrrrr"/>
118+
<phase duration="3" state="yyyyrrrryyyyrrrr"/>
119+
<phase duration="42" state="rrrrGGGgrrrrGGGg"/>
120+
<phase duration="3" state="rrrryyyyrrrryyyy"/>
121+
</tlLogic>
122+
123+
<junction id="center" type="traffic_light" x="500.00" y="500.00" incLanes="north_to_center_0 north_to_center_1 east_to_center_0 east_to_center_1 south_to_center_0 south_to_center_1 west_to_center_0 west_to_center_1" intLanes=":center_0_0 :center_1_0 :center_1_1 :center_16_0 :center_4_0 :center_5_0 :center_5_1 :center_17_0 :center_8_0 :center_9_0 :center_9_1 :center_18_0 :center_12_0 :center_13_0 :center_13_1 :center_19_0" shape="493.60,510.40 506.40,510.40 506.84,508.18 507.40,507.40 508.18,506.84 509.18,506.51 510.40,506.40 510.40,493.60 508.18,493.16 507.40,492.60 506.84,491.82 506.51,490.82 506.40,489.60 493.60,489.60 493.16,491.82 492.60,492.60 491.82,493.16 490.82,493.49 489.60,493.60 489.60,506.40 491.82,506.84 492.60,507.40 493.16,508.18 493.49,509.18">
124+
<request index="0" response="0000000000000000" foes="0000000001100000" cont="0"/>
125+
<request index="1" response="1000000000000000" foes="1111100011100000" cont="0"/>
126+
<request index="2" response="1000000010000000" foes="1111100011100000" cont="0"/>
127+
<request index="3" response="1000011010000000" foes="1110011011100000" cont="1"/>
128+
<request index="4" response="0000011000000000" foes="0000011000000000" cont="0"/>
129+
<request index="5" response="0000111000001111" foes="1000111000001111" cont="0"/>
130+
<request index="6" response="0000111000001111" foes="1000111000001111" cont="0"/>
131+
<request index="7" response="0110111000001110" foes="0110111000001110" cont="1"/>
132+
<request index="8" response="0000000000000000" foes="0110000000000000" cont="0"/>
133+
<request index="9" response="0000000010000000" foes="1110000011111000" cont="0"/>
134+
<request index="10" response="1000000010000000" foes="1110000011111000" cont="0"/>
135+
<request index="11" response="1000000010000110" foes="1110000011100110" cont="1"/>
136+
<request index="12" response="0000000000000110" foes="0000000000000110" cont="0"/>
137+
<request index="13" response="0000111100001110" foes="0000111110001110" cont="0"/>
138+
<request index="14" response="0000111100001110" foes="0000111110001110" cont="0"/>
139+
<request index="15" response="0000111001101110" foes="0000111001101110" cont="1"/>
140+
</junction>
141+
<junction id="east" type="dead_end" x="1000.00" y="500.00" incLanes="center_to_east_0 center_to_east_1" intLanes="" shape="1000.00,500.00 1000.00,493.60 1000.00,500.00"/>
142+
<junction id="north" type="dead_end" x="500.00" y="1000.00" incLanes="center_to_north_0 center_to_north_1" intLanes="" shape="500.00,1000.00 506.40,1000.00 500.00,1000.00"/>
143+
<junction id="south" type="dead_end" x="500.00" y="0.00" incLanes="center_to_south_0 center_to_south_1" intLanes="" shape="500.00,-0.00 493.60,-0.00 500.00,-0.00"/>
144+
<junction id="west" type="dead_end" x="0.00" y="500.00" incLanes="center_to_west_0 center_to_west_1" intLanes="" shape="-0.00,500.00 -0.00,506.40 -0.00,500.00"/>
145+
146+
<junction id=":center_16_0" type="internal" x="499.11" y="505.44" incLanes=":center_3_0 south_to_center_0 south_to_center_1" intLanes=":center_5_0 :center_5_1 :center_7_0 :center_8_0 :center_9_0 :center_9_1 :center_13_0 :center_13_1 :center_15_0"/>
147+
<junction id=":center_17_0" type="internal" x="505.44" y="500.89" incLanes=":center_7_0 west_to_center_0 west_to_center_1" intLanes=":center_1_0 :center_1_1 :center_3_0 :center_9_0 :center_9_1 :center_11_0 :center_12_0 :center_13_0 :center_13_1"/>
148+
<junction id=":center_18_0" type="internal" x="500.89" y="494.56" incLanes=":center_11_0 north_to_center_0 north_to_center_1" intLanes=":center_0_0 :center_1_0 :center_1_1 :center_5_0 :center_5_1 :center_7_0 :center_13_0 :center_13_1 :center_15_0"/>
149+
<junction id=":center_19_0" type="internal" x="494.56" y="499.11" incLanes=":center_15_0 east_to_center_0 east_to_center_1" intLanes=":center_1_0 :center_1_1 :center_3_0 :center_4_0 :center_5_0 :center_5_1 :center_9_0 :center_9_1 :center_11_0"/>
150+
151+
<connection from="east_to_center" to="center_to_north" fromLane="0" toLane="0" via=":center_4_0" tl="center" linkIndex="4" dir="r" state="o"/>
152+
<connection from="east_to_center" to="center_to_west" fromLane="0" toLane="0" via=":center_5_0" tl="center" linkIndex="5" dir="s" state="o"/>
153+
<connection from="east_to_center" to="center_to_west" fromLane="1" toLane="1" via=":center_5_1" tl="center" linkIndex="6" dir="s" state="o"/>
154+
<connection from="east_to_center" to="center_to_south" fromLane="1" toLane="1" via=":center_7_0" tl="center" linkIndex="7" dir="l" state="o"/>
155+
<connection from="north_to_center" to="center_to_west" fromLane="0" toLane="0" via=":center_0_0" tl="center" linkIndex="0" dir="r" state="O"/>
156+
<connection from="north_to_center" to="center_to_south" fromLane="0" toLane="0" via=":center_1_0" tl="center" linkIndex="1" dir="s" state="O"/>
157+
<connection from="north_to_center" to="center_to_south" fromLane="1" toLane="1" via=":center_1_1" tl="center" linkIndex="2" dir="s" state="O"/>
158+
<connection from="north_to_center" to="center_to_east" fromLane="1" toLane="1" via=":center_3_0" tl="center" linkIndex="3" dir="l" state="o"/>
159+
<connection from="south_to_center" to="center_to_east" fromLane="0" toLane="0" via=":center_8_0" tl="center" linkIndex="8" dir="r" state="O"/>
160+
<connection from="south_to_center" to="center_to_north" fromLane="0" toLane="0" via=":center_9_0" tl="center" linkIndex="9" dir="s" state="O"/>
161+
<connection from="south_to_center" to="center_to_north" fromLane="1" toLane="1" via=":center_9_1" tl="center" linkIndex="10" dir="s" state="O"/>
162+
<connection from="south_to_center" to="center_to_west" fromLane="1" toLane="1" via=":center_11_0" tl="center" linkIndex="11" dir="l" state="o"/>
163+
<connection from="west_to_center" to="center_to_south" fromLane="0" toLane="0" via=":center_12_0" tl="center" linkIndex="12" dir="r" state="o"/>
164+
<connection from="west_to_center" to="center_to_east" fromLane="0" toLane="0" via=":center_13_0" tl="center" linkIndex="13" dir="s" state="o"/>
165+
<connection from="west_to_center" to="center_to_east" fromLane="1" toLane="1" via=":center_13_1" tl="center" linkIndex="14" dir="s" state="o"/>
166+
<connection from="west_to_center" to="center_to_north" fromLane="1" toLane="1" via=":center_15_0" tl="center" linkIndex="15" dir="l" state="o"/>
167+
168+
<connection from=":center_0" to="center_to_west" fromLane="0" toLane="0" dir="r" state="M"/>
169+
<connection from=":center_1" to="center_to_south" fromLane="0" toLane="0" dir="s" state="M"/>
170+
<connection from=":center_1" to="center_to_south" fromLane="1" toLane="1" dir="s" state="M"/>
171+
<connection from=":center_3" to="center_to_east" fromLane="0" toLane="1" via=":center_16_0" dir="l" state="m"/>
172+
<connection from=":center_16" to="center_to_east" fromLane="0" toLane="1" dir="l" state="M"/>
173+
<connection from=":center_4" to="center_to_north" fromLane="0" toLane="0" dir="r" state="M"/>
174+
<connection from=":center_5" to="center_to_west" fromLane="0" toLane="0" dir="s" state="M"/>
175+
<connection from=":center_5" to="center_to_west" fromLane="1" toLane="1" dir="s" state="M"/>
176+
<connection from=":center_7" to="center_to_south" fromLane="0" toLane="1" via=":center_17_0" dir="l" state="m"/>
177+
<connection from=":center_17" to="center_to_south" fromLane="0" toLane="1" dir="l" state="M"/>
178+
<connection from=":center_8" to="center_to_east" fromLane="0" toLane="0" dir="r" state="M"/>
179+
<connection from=":center_9" to="center_to_north" fromLane="0" toLane="0" dir="s" state="M"/>
180+
<connection from=":center_9" to="center_to_north" fromLane="1" toLane="1" dir="s" state="M"/>
181+
<connection from=":center_11" to="center_to_west" fromLane="0" toLane="1" via=":center_18_0" dir="l" state="m"/>
182+
<connection from=":center_18" to="center_to_west" fromLane="0" toLane="1" dir="l" state="M"/>
183+
<connection from=":center_12" to="center_to_south" fromLane="0" toLane="0" dir="r" state="M"/>
184+
<connection from=":center_13" to="center_to_east" fromLane="0" toLane="0" dir="s" state="M"/>
185+
<connection from=":center_13" to="center_to_east" fromLane="1" toLane="1" dir="s" state="M"/>
186+
<connection from=":center_15" to="center_to_north" fromLane="0" toLane="1" via=":center_19_0" dir="l" state="m"/>
187+
<connection from=":center_19" to="center_to_north" fromLane="0" toLane="1" dir="l" state="M"/>
188+
189+
</net>

‎Examples/FlowDemo/flowdemo.nod.xml‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<nodes>
3+
<node id="west" x="-500.00" y="0.00" type="dead_end"/>
4+
<node id="east" x="500.00" y="0.00" type="dead_end"/>
5+
<node id="south" x="0.00" y="-500.00" type="dead_end"/>
6+
<node id="north" x="0.00" y="500.00" type="dead_end"/>
7+
<node id="center" x="0.00" y="0.00" type="traffic_light"/>
8+
</nodes>

‎Examples/FlowDemo/flowdemo.rou.xml‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<routes>
3+
<vType id="car" accel="2.6" decel="4.5" sigma="0.5" length="5.0" minGap="2.5" maxSpeed="13.89" color="0.2,0.6,1.0"/>
4+
<vType id="bus" accel="1.2" decel="4.0" sigma="0.4" length="12.0" minGap="3.0" maxSpeed="11.11" color="1.0,0.7,0.2"/>
5+
6+
<route id="west_east" edges="west_to_center center_to_east"/>
7+
<route id="east_west" edges="east_to_center center_to_west"/>
8+
<route id="south_north" edges="south_to_center center_to_north"/>
9+
<route id="north_south" edges="north_to_center center_to_south"/>
10+
<route id="west_north" edges="west_to_center center_to_north"/>
11+
<route id="south_east" edges="south_to_center center_to_east"/>
12+
13+
<flow id="we_car" type="car" route="west_east" begin="0" end="300" period="2.0" departLane="best" departSpeed="max"/>
14+
<flow id="ew_car" type="car" route="east_west" begin="5" end="300" period="2.3" departLane="best" departSpeed="max"/>
15+
<flow id="sn_car" type="car" route="south_north" begin="10" end="300" period="2.6" departLane="best" departSpeed="max"/>
16+
<flow id="ns_car" type="car" route="north_south" begin="15" end="300" period="3.0" departLane="best" departSpeed="max"/>
17+
<flow id="turning_car" type="car" route="west_north" begin="20" end="300" period="4.0" departLane="best" departSpeed="max"/>
18+
<flow id="bus_flow" type="bus" route="south_east" begin="30" end="300" period="18.0" departLane="best" departSpeed="max"/>
19+
</routes>

‎Examples/FlowDemo/flowdemo.sumocfg‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
<input>
4+
<net-file value="flowdemo.net.xml"/>
5+
<route-files value="flowdemo.rou.xml"/>
6+
</input>
7+
<time>
8+
<begin value="0"/>
9+
<end value="300"/>
10+
<step-length value="1"/>
11+
</time>
12+
<processing>
13+
<time-to-teleport value="-1"/>
14+
</processing>
15+
<report>
16+
<no-step-log value="true"/>
17+
</report>
18+
</configuration>

‎Package.swift‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ let package = Package(
1919
path: "Sources/SumoGUIMac",
2020
exclude: ["Resources"]
2121
),
22+
.executableTarget(
23+
name: "NetParseBenchmark",
24+
dependencies: ["SumoKit"],
25+
path: "Sources/NetParseBenchmark"
26+
),
2227
.testTarget(
2328
name: "SumoKitTests",
2429
dependencies: ["SumoKit"],

‎Scripts/benchmark-net-parse.sh‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
if [[ $# -ne 1 ]]; then
5+
echo "Usage: Scripts/benchmark-net-parse.sh <network.net.xml>" >&2
6+
exit 2
7+
fi
8+
9+
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
10+
REPO_ROOT="$(cd -- "$SCRIPT_DIR/.." && pwd)"
11+
12+
cd "$REPO_ROOT"
13+
swift run -c release NetParseBenchmark "$1"

0 commit comments

Comments
 (0)