h5-projekt-mst/docs/h5-mst-game-entity-relations.drawio.svg
2026-04-20 16:54:59 +02:00

4 lines
29 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background: #ffffff; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="763px" height="481px" viewBox="0 0 763 481" content="&lt;mxfile host=&quot;app.diagrams.net&quot; scale=&quot;1&quot; border=&quot;0&quot;&gt;&#10; &lt;diagram name=&quot;Page-1&quot; id=&quot;Lnt1eXXTnRYSeI67kurg&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;1770&quot; dy=&quot;1006&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;827&quot; pageHeight=&quot;1169&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-12&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;SwkXgYqch9ItDSv6RYbX-1&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;endArrow=open;endFill=0;&quot; target=&quot;SwkXgYqch9ItDSv6RYbX-3&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-1&quot; parent=&quot;1&quot; style=&quot;rounded=1;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;engine::&amp;lt;b&amp;gt;Game&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;320&quot; y=&quot;220&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-3&quot; parent=&quot;1&quot; style=&quot;rounded=1;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;engine::&amp;lt;b&amp;gt;Renderer&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;320&quot; y=&quot;320&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-7&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;SwkXgYqch9ItDSv6RYbX-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endArrow=block;endFill=1;curved=0;&quot; target=&quot;SwkXgYqch9ItDSv6RYbX-1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;Array as=&quot;points&quot;&gt;&#10; &lt;mxPoint x=&quot;510&quot; y=&quot;550&quot; /&gt;&#10; &lt;mxPoint x=&quot;510&quot; y=&quot;250&quot; /&gt;&#10; &lt;/Array&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-8&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;SwkXgYqch9ItDSv6RYbX-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;curved=0;endArrow=open;endFill=0;&quot; target=&quot;SwkXgYqch9ItDSv6RYbX-3&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;Array as=&quot;points&quot;&gt;&#10; &lt;mxPoint x=&quot;480&quot; y=&quot;535&quot; /&gt;&#10; &lt;mxPoint x=&quot;480&quot; y=&quot;335&quot; /&gt;&#10; &lt;/Array&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-17&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;SwkXgYqch9ItDSv6RYbX-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;curved=0;endArrow=open;endFill=0;&quot; target=&quot;SwkXgYqch9ItDSv6RYbX-14&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-22&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;SwkXgYqch9ItDSv6RYbX-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;curved=0;endArrow=open;endFill=0;&quot; target=&quot;SwkXgYqch9ItDSv6RYbX-18&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-23&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;SwkXgYqch9ItDSv6RYbX-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=0;endArrow=ERmany;endFill=0;&quot; target=&quot;SwkXgYqch9ItDSv6RYbX-20&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-25&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;SwkXgYqch9ItDSv6RYbX-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;endArrow=open;endFill=0;curved=0;&quot; target=&quot;SwkXgYqch9ItDSv6RYbX-19&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-28&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;SwkXgYqch9ItDSv6RYbX-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endArrow=open;endFill=0;&quot; target=&quot;SwkXgYqch9ItDSv6RYbX-27&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-5&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;b&amp;gt;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;Game&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;320&quot; y=&quot;520&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-9&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;SwkXgYqch9ItDSv6RYbX-6&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;endArrow=block;endFill=1;&quot; target=&quot;SwkXgYqch9ItDSv6RYbX-3&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-6&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;engine::&amp;lt;b&amp;gt;SdlIo&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;600&quot; y=&quot;320&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-10&quot; edge=&quot;1&quot; parent=&quot;1&quot; style=&quot;endArrow=none;html=1;rounded=0;strokeWidth=2;dashed=1;&quot; value=&quot;&quot;&gt;&#10; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;40&quot; y=&quot;450&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;800&quot; y=&quot;450&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-11&quot; connectable=&quot;0&quot; parent=&quot;SwkXgYqch9ItDSv6RYbX-10&quot; style=&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];&quot; value=&quot;engine&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; x=&quot;0.0417&quot; y=&quot;-4&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;4&quot; y=&quot;-14&quot; as=&quot;offset&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-15&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;SwkXgYqch9ItDSv6RYbX-14&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endArrow=open;endFill=0;&quot; target=&quot;SwkXgYqch9ItDSv6RYbX-3&quot;&gt;&#10; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-14&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;engine::&amp;lt;b&amp;gt;Scene&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;100&quot; y=&quot;320&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-18&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;b&amp;gt;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;Skateboard&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;460&quot; y=&quot;640&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-19&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;b&amp;gt;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;Ground&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;170&quot; y=&quot;640&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-20&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;b&amp;gt;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;Segment&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;320&quot; y=&quot;640&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;SwkXgYqch9ItDSv6RYbX-27&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;b&amp;gt;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;Server&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#10; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;600&quot; y=&quot;550&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;"><defs/><rect fill="#ffffff" width="100%" height="100%" x="0" y="0" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212));"/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="SwkXgYqch9ItDSv6RYbX-12"><g transform="translate(0.5,0.5)"><path d="M 310 60 L 310 97.76" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 306.5 91.88 L 310 98.88 L 313.5 91.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-1"><g transform="translate(0.5,0.5)"><rect x="280" y="0" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 30px; margin-left: 281px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Courier New">engine::<b>Game</b></font></div></div></div></foreignObject><text x="340" y="34" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">engine::Game</text></switch></g></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-3"><g transform="translate(0.5,0.5)"><rect x="280" y="100" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 130px; margin-left: 281px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Courier New">engine::<b>Renderer</b></font></div></div></div></foreignObject><text x="340" y="134" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">engine::Renderer</text></switch></g></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-7"><g transform="translate(0.5,0.5)"><path d="M 400 330 L 460 330 Q 470 330 470 320 L 470 40 Q 470 30 460 30 L 408.12 30" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 401.12 30 L 408.12 26.5 L 408.12 33.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-8"><g transform="translate(0.5,0.5)"><path d="M 400 315 L 430 315.03 Q 440 315.03 440 305.03 L 440 125.03 Q 440 115.03 430 115.03 L 402.24 115" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 408.12 111.51 L 401.12 115 L 408.11 118.51" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-17"><g transform="translate(0.5,0.5)"><path d="M 280 315 L 160 315.03 Q 150 315.03 150 305.03 L 150 162.24" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 153.5 168.12 L 150 161.12 L 146.5 168.12" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-22"><g transform="translate(0.5,0.5)"><path d="M 370 360 L 370 380 Q 370 390 380 390 L 440 390 Q 450 390 450 400 L 450 417.76" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.5 411.88 L 450 418.88 L 453.5 411.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-23"><g transform="translate(0.5,0.5)"><path d="M 340 360 L 340 420" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 344 420 L 340 412 L 336 420" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-25"><g transform="translate(0.5,0.5)"><path d="M 280 345 L 230 345.03 Q 220 345.03 220 355.03 L 220 417.76" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 216.5 411.88 L 220 418.88 L 223.5 411.88" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-28"><g transform="translate(0.5,0.5)"><path d="M 400 345 L 557.76 345" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 551.88 348.5 L 558.88 345 L 551.88 341.5" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-5"><g transform="translate(0.5,0.5)"><rect x="280" y="300" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 330px; margin-left: 281px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b><font face="Courier New">Game</font></b></div></div></div></foreignObject><text x="340" y="334" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Game</text></switch></g></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-9"><g transform="translate(0.5,0.5)"><path d="M 560 145 L 408.12 145" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 401.12 145 L 408.12 141.5 L 408.12 148.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-6"><g transform="translate(0.5,0.5)"><rect x="560" y="100" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 130px; margin-left: 561px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Courier New">engine::<b>SdlIo</b></font></div></div></div></foreignObject><text x="620" y="134" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">engine::SdlIo</text></switch></g></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-10"><g transform="translate(0.5,0.5)"><path d="M 0 230 L 760 230" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-11"><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 220px; margin-left: 400px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">engine</div></div></div></foreignObject><text x="400" y="224" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="11px" text-anchor="middle">engine</text></switch></g></g></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-15"><g transform="translate(0.5,0.5)"><path d="M 180 115 L 277.76 115" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 271.88 118.5 L 278.88 115 L 271.88 111.5" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-14"><g transform="translate(0.5,0.5)"><rect x="60" y="100" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 130px; margin-left: 61px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font face="Courier New">engine::<b>Scene</b></font></div></div></div></foreignObject><text x="120" y="134" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">engine::Scene</text></switch></g></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-18"><g transform="translate(0.5,0.5)"><rect x="420" y="420" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 450px; margin-left: 421px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b><font face="Courier New">Skateboard</font></b></div></div></div></foreignObject><text x="480" y="454" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Skateboard</text></switch></g></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-19"><g transform="translate(0.5,0.5)"><rect x="130" y="420" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 450px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b><font face="Courier New">Ground</font></b></div></div></div></foreignObject><text x="190" y="454" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Ground</text></switch></g></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-20"><g transform="translate(0.5,0.5)"><rect x="280" y="420" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 450px; margin-left: 281px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b><font face="Courier New">Segment</font></b></div></div></div></foreignObject><text x="340" y="454" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Segment</text></switch></g></g></g><g data-cell-id="SwkXgYqch9ItDSv6RYbX-27"><g transform="translate(0.5,0.5)"><rect x="560" y="330" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 360px; margin-left: 561px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b><font face="Courier New">Server</font></b></div></div></div></foreignObject><text x="620" y="364" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Server</text></switch></g></g></g></g></g></g></svg>