diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-09-24 14:17:37 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-09-24 14:17:37 +0200 |
commit | ffb544db323d20577a83d55b425a4d129ed0a0a8 (patch) | |
tree | 068b347befb24cb06104d99cb78e6624c0052a96 | |
parent | cd00d692240810ba3669a4c749fc9c4aafbfb5d4 (diff) | |
parent | c6aa1ad7ee44589f261f76aea77963edeed106d4 (diff) |
merge `jaro/project-plan` into `master`
-rw-r--r-- | figs.drawio | 761 | ||||
-rw-r--r-- | plan.tex | 118 | ||||
-rw-r--r-- | sources.bib | 20 |
3 files changed, 820 insertions, 79 deletions
diff --git a/figs.drawio b/figs.drawio new file mode 100644 index 0000000..7c961d1 --- /dev/null +++ b/figs.drawio @@ -0,0 +1,761 @@ +<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.8 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.8" pages="2"> + <diagram id="C5RBs43oDa-KdzZeNtuy" name="Main diagram"> + <mxGraphModel dx="2577" dy="1035" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> + <root> + <mxCell id="WIyWlLk6GJQsqaUBKTNV-0" /> + <mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" /> + <mxCell id="zkfFHV4jXpPFQw0GAbJ--6" value="GameObject" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="320" y="540" width="160" height="153" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="zkfFHV4jXpPFQw0GAbJ--7" value="+name" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;movable=0;resizable=0;deletable=0;editable=0;locked=1;connectable=0;" parent="zkfFHV4jXpPFQw0GAbJ--6" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="zkfFHV4jXpPFQw0GAbJ--8" value="+tag" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;movable=0;resizable=0;deletable=0;editable=0;locked=1;connectable=0;" parent="zkfFHV4jXpPFQw0GAbJ--6" vertex="1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-1" value="+active" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=0;resizable=0;deletable=0;editable=0;locked=1;connectable=0;" parent="zkfFHV4jXpPFQw0GAbJ--6" vertex="1"> + <mxGeometry y="60" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-2" value="+layer" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;movable=0;resizable=0;deletable=0;editable=0;locked=1;connectable=0;" parent="zkfFHV4jXpPFQw0GAbJ--6" vertex="1"> + <mxGeometry y="77" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="zkfFHV4jXpPFQw0GAbJ--9" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=0;resizable=0;deletable=0;editable=0;locked=1;connectable=0;" parent="zkfFHV4jXpPFQw0GAbJ--6" vertex="1"> + <mxGeometry y="94" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="zkfFHV4jXpPFQw0GAbJ--11" value="+AddComponent()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;movable=0;resizable=0;deletable=0;editable=0;locked=1;connectable=0;" parent="zkfFHV4jXpPFQw0GAbJ--6" vertex="1"> + <mxGeometry y="102" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-3" value="+IsActiveInWorld()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;movable=0;resizable=0;deletable=0;editable=0;locked=1;connectable=0;" parent="zkfFHV4jXpPFQw0GAbJ--6" vertex="1"> + <mxGeometry y="119" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-4" value="+IsActiveSelf()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;movable=0;resizable=0;deletable=0;editable=0;locked=1;connectable=0;" parent="zkfFHV4jXpPFQw0GAbJ--6" vertex="1"> + <mxGeometry y="136" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-9" value="Scene" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="40" y="590" width="160" height="68" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-82" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-9" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-14" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-9" vertex="1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-81" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-9" vertex="1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-28" value="" style="endArrow=open;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-9" target="zkfFHV4jXpPFQw0GAbJ--6" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="260" y="580" as="sourcePoint" /> + <mxPoint x="290" y="590" as="targetPoint" /> + <Array as="points"> + <mxPoint x="320" y="625" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-39" value="+contents" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="PVU13nk45NJB4w4DQgDw-28" vertex="1" connectable="0"> + <mxGeometry x="-0.1405" y="-1" relative="1" as="geometry"> + <mxPoint y="-17" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-40" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="PVU13nk45NJB4w4DQgDw-28" vertex="1" connectable="0"> + <mxGeometry x="-0.7119" y="-1" relative="1" as="geometry"> + <mxPoint y="14" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-41" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="PVU13nk45NJB4w4DQgDw-28" vertex="1" connectable="0"> + <mxGeometry x="0.6214" y="-1" relative="1" as="geometry"> + <mxPoint x="3" y="14" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-34" value="Camera" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="40" y="760" width="160" height="102" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-78" value="+backgroundColor" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-34" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-77" value="+ascpectWidth" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-34" vertex="1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-35" value="+ascpectHeight" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-34" vertex="1"> + <mxGeometry y="60" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-36" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-34" vertex="1"> + <mxGeometry y="77" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-37" value="-" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-34" vertex="1"> + <mxGeometry y="85" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-46" value="" style="endArrow=open;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-34" target="PVU13nk45NJB4w4DQgDw-9" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="210" y="635" as="sourcePoint" /> + <mxPoint x="140" y="660" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-47" value="+renderScene" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="PVU13nk45NJB4w4DQgDw-46" vertex="1" connectable="0"> + <mxGeometry x="-0.1405" y="-1" relative="1" as="geometry"> + <mxPoint x="-41" y="-6" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-48" value="1..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="PVU13nk45NJB4w4DQgDw-46" vertex="1" connectable="0"> + <mxGeometry x="-0.7119" y="-1" relative="1" as="geometry"> + <mxPoint x="-21" y="4" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-49" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="PVU13nk45NJB4w4DQgDw-46" vertex="1" connectable="0"> + <mxGeometry x="0.6214" y="-1" relative="1" as="geometry"> + <mxPoint x="9" y="-9" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-50" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-34" target="zkfFHV4jXpPFQw0GAbJ--6" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="130" y="770" as="sourcePoint" /> + <mxPoint x="290" y="670" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-54" value="UIObject" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="320" y="740" width="160" height="85" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-86" value="+width" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-54" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-55" value="+height" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-54" vertex="1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-56" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-54" vertex="1"> + <mxGeometry y="60" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-85" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-54" vertex="1"> + <mxGeometry y="68" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-58" value="Button" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="230" y="880" width="160" height="85" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-87" value="+interactable
" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-58" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-59" value="+onClick" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-58" vertex="1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-60" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-58" vertex="1"> + <mxGeometry y="60" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-83" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-58" vertex="1"> + <mxGeometry y="68" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-62" value="Text" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="414" y="880" width="160" height="136" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-93" value="+text" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-62" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-92" value="+font: String" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-62" vertex="1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-91" value="+size: int" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-62" vertex="1"> + <mxGeometry y="60" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-90" value="+allignment" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-62" vertex="1"> + <mxGeometry y="77" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-89" value="+color" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-62" vertex="1"> + <mxGeometry y="94" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-64" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-62" vertex="1"> + <mxGeometry y="111" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-84" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-62" vertex="1"> + <mxGeometry y="119" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-66" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-54" target="zkfFHV4jXpPFQw0GAbJ--6" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="210" y="770" as="sourcePoint" /> + <mxPoint x="330" y="678" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-67" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-58" target="PVU13nk45NJB4w4DQgDw-54" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="195" y="780" as="sourcePoint" /> + <mxPoint x="384" y="810" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-68" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-62" target="PVU13nk45NJB4w4DQgDw-54" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="205" y="790" as="sourcePoint" /> + <mxPoint x="350" y="698" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-102" value="" style="endArrow=open;html=1;rounded=0;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;resizable=1;endFill=0;endSize=8;" parent="WIyWlLk6GJQsqaUBKTNV-1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="480" y="640" as="sourcePoint" /> + <mxPoint x="480" y="680" as="targetPoint" /> + <Array as="points"> + <mxPoint x="520" y="640" /> + <mxPoint x="520" y="680" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-103" value="+parent &gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="PVU13nk45NJB4w4DQgDw-102" vertex="1" connectable="0"> + <mxGeometry x="-0.719" y="3" relative="1" as="geometry"> + <mxPoint x="13" y="-4" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-104" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="PVU13nk45NJB4w4DQgDw-102" vertex="1" connectable="0"> + <mxGeometry x="-0.0905" y="1" relative="1" as="geometry"> + <mxPoint x="-31" y="-5" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-105" value="0..1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="PVU13nk45NJB4w4DQgDw-102" vertex="1" connectable="0"> + <mxGeometry y="1" relative="1" as="geometry"> + <mxPoint x="-21" y="30" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-106" value="Transform" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="560" y="565.5" width="160" height="102" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-111" value="+position" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-106" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-110" value="+rotation" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-106" vertex="1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-107" value="+scale" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-106" vertex="1"> + <mxGeometry y="60" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-108" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-106" vertex="1"> + <mxGeometry y="77" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-109" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-106" vertex="1"> + <mxGeometry y="85" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-112" value="" style="endArrow=none;html=1;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--6" target="PVU13nk45NJB4w4DQgDw-106" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="510" y="610" as="sourcePoint" /> + <mxPoint x="560" y="560" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-113" value="iMouseListener" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="640" y="880" width="160" height="119" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-114" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-113" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-115" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-113" vertex="1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-116" value="+OnMouseMoved()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-113" vertex="1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-121" value="+OnMouseClicked()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-113" vertex="1"> + <mxGeometry y="68" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-122" value="+OnMousePressed()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-113" vertex="1"> + <mxGeometry y="85" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-123" value="+OnMouseReleased()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-113" vertex="1"> + <mxGeometry y="102" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-117" value="iKeyListener" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="840" y="880" width="160" height="85" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-118" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-117" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-119" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-117" vertex="1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-120" value="+OnKeyPressed()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-117" vertex="1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-124" value="+OnKeyReleased()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-117" vertex="1"> + <mxGeometry y="68" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-125" value="Color" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="-200" y="760" width="160" height="68" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-126" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-125" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-127" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-125" vertex="1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-128" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-125" vertex="1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-129" value="Point" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="-200" y="650" width="160" height="68" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-130" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-129" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-131" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-129" vertex="1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-132" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-129" vertex="1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-133" value="Debug" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="-200" y="560" width="70" height="40" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-135" value="Time" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="-200" y="490" width="70" height="40" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-136" value="Input" style="shape=folder;fontStyle=1;spacingTop=10;tabWidth=40;tabHeight=14;tabPosition=left;html=1;whiteSpace=wrap;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="-200" y="420" width="70" height="40" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-138" value="AudioSource" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="30" y="212" width="160" height="136" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-142" value="+audioClip: Resource* (was String)" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;fontColor=#ff0000;" parent="PVU13nk45NJB4w4DQgDw-138" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-143" value="+playOnAwake: Boolean" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-138" vertex="1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-144" value="+loop: Boolean" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-138" vertex="1"> + <mxGeometry y="60" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-145" value="+volume" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-138" vertex="1"> + <mxGeometry y="77" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-140" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-138" vertex="1"> + <mxGeometry y="94" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-141" value="+Play(looping)" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-138" vertex="1"> + <mxGeometry y="102" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-150" value="+Stop()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-138" vertex="1"> + <mxGeometry y="119" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-152" value="Collider" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="310" y="212" width="160" height="68" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-153" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-152" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-154" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-152" vertex="1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-155" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-152" vertex="1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-156" value="CircleCollider" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="220" y="318" width="160" height="68" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-157" value="+radius" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-156" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-158" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-156" vertex="1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-159" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-156" vertex="1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-160" value="BoxCollider" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="414" y="316" width="160" height="85" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-164" value="+width" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-160" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-161" value="+height" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-160" vertex="1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-162" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-160" vertex="1"> + <mxGeometry y="60" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-163" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-160" vertex="1"> + <mxGeometry y="68" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-165" value="Component" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="410" y="82" width="160" height="68" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-166" value="+active: Boolean" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-165" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-167" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-165" vertex="1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-168" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-165" vertex="1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-169" value="Rigidbody" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="550" y="195" width="160" height="102" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-174" value="+mass" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-169" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-173" value="+gravityScale" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-169" vertex="1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-170" value="+bodyType" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-169" vertex="1"> + <mxGeometry y="60" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-171" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-169" vertex="1"> + <mxGeometry y="77" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-172" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-169" vertex="1"> + <mxGeometry y="85" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-175" value="BehaviourScript" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="690" y="316" width="160" height="85" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-176" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-175" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-177" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-175" vertex="1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-178" value="+OnStart()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-175" vertex="1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-179" value="+OnUpdate()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-175" vertex="1"> + <mxGeometry y="68" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-180" value="Sprite" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="880" y="165" width="160" height="153" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-199" value="+sprite:Resource* (WasString)" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;fontColor=#ff0000;" parent="PVU13nk45NJB4w4DQgDw-180" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-198" value="+color" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-180" vertex="1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-197" value="+flipX" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-180" vertex="1"> + <mxGeometry y="60" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-196" value="+flipY" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-180" vertex="1"> + <mxGeometry y="77" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-195" value="+sortingLayer" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-180" vertex="1"> + <mxGeometry y="94" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-181" value="+orderInLayer" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-180" vertex="1"> + <mxGeometry y="111" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-182" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-180" vertex="1"> + <mxGeometry y="128" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-183" value="+Render()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-180" vertex="1"> + <mxGeometry y="136" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-185" value="Animator" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> + <mxGeometry x="1050" y="318" width="160" height="85" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-186" value="+fps" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-185" vertex="1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-187" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" parent="PVU13nk45NJB4w4DQgDw-185" vertex="1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-188" value="+Play(looping)" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-185" vertex="1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="PVU13nk45NJB4w4DQgDw-189" value="+Stop()" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" parent="PVU13nk45NJB4w4DQgDw-185" vertex="1"> + <mxGeometry y="68" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-4" value="" style="endArrow=none;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;startArrow=diamondThin;startFill=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--6" target="PVU13nk45NJB4w4DQgDw-138"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="320" y="510" as="sourcePoint" /> + <mxPoint x="160" y="400" as="targetPoint" /> + <Array as="points"> + <mxPoint x="320" y="520" /> + <mxPoint x="110" y="520" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-9" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GgpaCZaR6PRI7i0rwrCe-4"> + <mxGeometry x="0.8037" y="-2" relative="1" as="geometry"> + <mxPoint x="-16" y="-4" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-10" value="" style="endArrow=none;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;startArrow=diamondThin;startFill=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--6" target="PVU13nk45NJB4w4DQgDw-156"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="344" y="550" as="sourcePoint" /> + <mxPoint x="179" y="358" as="targetPoint" /> + <Array as="points"> + <mxPoint x="330" y="490" /> + <mxPoint x="300" y="490" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-11" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GgpaCZaR6PRI7i0rwrCe-10"> + <mxGeometry x="0.8037" y="-2" relative="1" as="geometry"> + <mxPoint x="-16" y="-4" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-12" value="" style="endArrow=none;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;startArrow=diamondThin;startFill=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--6" target="PVU13nk45NJB4w4DQgDw-160"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="354" y="560" as="sourcePoint" /> + <mxPoint x="189" y="368" as="targetPoint" /> + <Array as="points"> + <mxPoint x="470" y="440" /> + <mxPoint x="494" y="440" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-13" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GgpaCZaR6PRI7i0rwrCe-12"> + <mxGeometry x="0.8037" y="-2" relative="1" as="geometry"> + <mxPoint x="-16" y="-4" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-14" value="" style="endArrow=none;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;startArrow=diamondThin;startFill=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--6" target="PVU13nk45NJB4w4DQgDw-169"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="364" y="570" as="sourcePoint" /> + <mxPoint x="199" y="378" as="targetPoint" /> + <Array as="points"> + <mxPoint x="500" y="460" /> + <mxPoint x="630" y="460" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-15" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GgpaCZaR6PRI7i0rwrCe-14"> + <mxGeometry x="0.8037" y="-2" relative="1" as="geometry"> + <mxPoint x="-16" y="-26" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-16" value="" style="endArrow=none;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;startArrow=diamondThin;startFill=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--6" target="PVU13nk45NJB4w4DQgDw-175"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="374" y="580" as="sourcePoint" /> + <mxPoint x="209" y="388" as="targetPoint" /> + <Array as="points"> + <mxPoint x="520" y="480" /> + <mxPoint x="770" y="480" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-17" value="*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GgpaCZaR6PRI7i0rwrCe-16"> + <mxGeometry x="0.8037" y="-2" relative="1" as="geometry"> + <mxPoint x="-12" y="-21" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-18" value="" style="endArrow=none;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;startArrow=diamondThin;startFill=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--6" target="PVU13nk45NJB4w4DQgDw-180"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="384" y="590" as="sourcePoint" /> + <mxPoint x="219" y="398" as="targetPoint" /> + <Array as="points"> + <mxPoint x="540" y="500" /> + <mxPoint x="960" y="500" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-19" value="0..1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GgpaCZaR6PRI7i0rwrCe-18"> + <mxGeometry x="0.8037" y="-2" relative="1" as="geometry"> + <mxPoint x="-16" y="-45" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-20" value="" style="endArrow=none;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;startArrow=diamondThin;startFill=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="zkfFHV4jXpPFQw0GAbJ--6" target="PVU13nk45NJB4w4DQgDw-185"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="394" y="600" as="sourcePoint" /> + <mxPoint x="229" y="408" as="targetPoint" /> + <Array as="points"> + <mxPoint x="560" y="520" /> + <mxPoint x="1130" y="520" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-21" value="0..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GgpaCZaR6PRI7i0rwrCe-20"> + <mxGeometry x="0.8037" y="-2" relative="1" as="geometry"> + <mxPoint x="-16" y="-50" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-24" value="" style="endArrow=open;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-185" target="PVU13nk45NJB4w4DQgDw-180"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="960" y="439.38" as="sourcePoint" /> + <mxPoint x="1220" y="440" as="targetPoint" /> + <Array as="points"> + <mxPoint x="1130" y="240" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-26" value="0..1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GgpaCZaR6PRI7i0rwrCe-24"> + <mxGeometry x="-0.7119" y="-1" relative="1" as="geometry"> + <mxPoint x="-21" y="14" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-27" value="1..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="GgpaCZaR6PRI7i0rwrCe-24"> + <mxGeometry x="0.6214" y="-1" relative="1" as="geometry"> + <mxPoint x="3" y="14" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-28" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-138" target="PVU13nk45NJB4w4DQgDw-165"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="203" y="770" as="sourcePoint" /> + <mxPoint x="330" y="682" as="targetPoint" /> + <Array as="points"> + <mxPoint x="110" y="160" /> + <mxPoint x="380" y="160" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-29" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-152" target="PVU13nk45NJB4w4DQgDw-165"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="380" y="358" as="sourcePoint" /> + <mxPoint x="507" y="270" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-31" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-156" target="PVU13nk45NJB4w4DQgDw-152"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="250" y="358" as="sourcePoint" /> + <mxPoint x="377" y="270" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-32" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-160" target="PVU13nk45NJB4w4DQgDw-152"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="320" y="460" as="sourcePoint" /> + <mxPoint x="447" y="372" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-33" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-169" target="PVU13nk45NJB4w4DQgDw-165"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="510" y="348" as="sourcePoint" /> + <mxPoint x="637" y="260" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-34" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-175" target="PVU13nk45NJB4w4DQgDw-165"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="600" y="436" as="sourcePoint" /> + <mxPoint x="727" y="348" as="targetPoint" /> + <Array as="points"> + <mxPoint x="770" y="160" /> + <mxPoint x="590" y="160" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-36" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="PVU13nk45NJB4w4DQgDw-180" target="PVU13nk45NJB4w4DQgDw-165"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="920" y="140" as="sourcePoint" /> + <mxPoint x="570" y="124" as="targetPoint" /> + <Array as="points"> + <mxPoint x="960" y="116" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-37" value="ParticelSystem" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1"> + <mxGeometry x="950" y="620" width="160" height="68" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-38" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" vertex="1" parent="GgpaCZaR6PRI7i0rwrCe-37"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-39" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" vertex="1" parent="GgpaCZaR6PRI7i0rwrCe-37"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-40" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" vertex="1" parent="GgpaCZaR6PRI7i0rwrCe-37"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-45" value="PolygonCollider" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1"> + <mxGeometry x="950" y="718" width="160" height="68" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-46" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" vertex="1" parent="GgpaCZaR6PRI7i0rwrCe-45"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-47" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" vertex="1" parent="GgpaCZaR6PRI7i0rwrCe-45"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="GgpaCZaR6PRI7i0rwrCe-48" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" vertex="1" parent="GgpaCZaR6PRI7i0rwrCe-45"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> + <diagram id="YIiIl2IRF6RgPQzV_9jG" name="Example"> + <mxGraphModel dx="1050" dy="621" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="rDWCdEblCpn9XmIhacVI-1" value="example
" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;direction=east;" vertex="1" parent="1"> + <mxGeometry x="160" y="70" width="160" height="68" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="rDWCdEblCpn9XmIhacVI-2" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" vertex="1" parent="rDWCdEblCpn9XmIhacVI-1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="rDWCdEblCpn9XmIhacVI-3" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=1;labelPosition=right;points=[];portConstraint=eastwest;fontSize=12;perimeterSpacing=0;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;verticalLabelPosition=middle;" vertex="1" parent="rDWCdEblCpn9XmIhacVI-1"> + <mxGeometry y="43" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="rDWCdEblCpn9XmIhacVI-4" style="text;align=left;verticalAlign=bottom;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=1;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;strokeWidth=1;horizontal=1;movable=1;resizable=1;deletable=1;editable=1;locked=0;connectable=1;" vertex="1" parent="rDWCdEblCpn9XmIhacVI-1"> + <mxGeometry y="51" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="INcigVm9b0TAH9v99pnO-1" value="" style="endArrow=block;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;strokeWidth=1;endSize=14;" edge="1" parent="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="200" y="200" as="sourcePoint" /> + <mxPoint x="160" y="160" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="BdnN9X1UdPwwrvRyySie-1" value="" style="endArrow=none;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;startArrow=diamondThin;startFill=1;" edge="1" parent="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="280" y="200" as="sourcePoint" /> + <mxPoint x="240" y="160" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="wr2JkJuTEkJ5C-UpQk8J-1" value="" style="endArrow=open;html=1;rounded=0;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;endFill=0;endSize=8;" edge="1" parent="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="360" y="200" as="sourcePoint" /> + <mxPoint x="320" y="160" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="oRUFz-RLu-avQMRJHf4n-1" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="440" y="200" as="sourcePoint" /> + <mxPoint x="400" y="160" as="targetPoint" /> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> @@ -10,23 +10,16 @@ \section{Background} This project is part of the fourth-year minor `Systems Programming in C++'. The minor -consists of several courses troughout 20 weeks, which create the basis for this -project. The project is focussed on building a game engine using the programming -language C++. This document describes our plan of attack for the project. +consists of several courses throughout 20 weeks, which create the basis for this +project. The project focus is on building a game engine using the programming +language C++. This document describes the plan of attack for the project. \section{Problem Definition} -% The assignments will be discussed with the project supervisor on specifics for this -% project. This will give the team the ability to direct the project. - -% @Jaro: Ik snap niet wat je met deze zinnen wil zeggen. Het lijkt een soort van -% background information, maar toch niet helemaal ofzo. Hoe dan ook heb ik het er nu -% even uit gehaald en een nieuw kopje background toegevoegd. - \subsection{Problem Analysis} CodedFun Games is a small, single-person game company looking to scale up. The owner, -who is also a game programmer, and graphical artist, has received government funding, +who is a game programmer, and graphical artist, has received government funding, which he wants to invest in a custom-built game engine. The owner has no interest in developing or maintaining a game engine himself, so he has hired a part-time engine programmer. This programmer does not have time to create an entire engine but is @@ -37,33 +30,30 @@ user-friendly. Additionally, the engine should be well-documented, which is considered an essential aspect of being user-friendly. So far, the client has made all his games in Unity and is very fond of the structure. -Therefore, he wants the new engine to adhere to a similar structure. A simple +Therefore, the client wants the new engine to adhere to a similar structure. A simple requirements document is defined to specify how strictly this structure should be followed. -Finally, because the client does not want to dive deeply into the engine himself, he -wants a secondary application (preferably a game) that can be used to test the -engine's features. This is referred to as the \emph{validation application}. +Finally, because the client does not want to dive deeply into the engine himself, he wants a secondary application (preferably a game) that can be used to test the engine's features. This is referred to as the \emph{validation application}. \subsection{Goal} -The goal is to develop a custom game engine that meets the client's requirements for -maintainability, extensibility, user-friendliness, and adherence to a Unity-like -structure. In addition, a validation application should be created to show and test -the engine's features. +The goal is to develop a custom game engine that meets the client's requirements for maintainability, extensibility, user-friendliness, and adherence to a Unity-like structure. The engine may integrate third-party software (as agreed with the client) to support specific features, such as audio, physics, and rendering. In addition, a \emph{validation application} is created to show and test the engine's features. + +\subsection{Scope} +The requirements document \autocite{crepe:requirements} has several requirements with a MoSCoW `must', `should', `could' or `won't' priority to indicate the project's scope. \subsection{Result} -The expected result is a well-documented, custom game engine that follows a structure -similar to Unity. Additionally, a validation application should be provided to test -and showcase the engine's capabilities. +The expected result is a well-documented, custom game engine that follows a structure similar to Unity. Additionally, a \emph{validation application} should be provided to test and showcase the engine's capabilities. + +\subsection{Validation Application} + +The \emph{validation application} \autocite{crepe:validation-application} is explained in a document where the features of the \emph{validation application} are linked to the user stories. \section{Planning} -The customer specified multiple deliverables troughout the 20 weeks of this project. -Despite the fact that 20 weeks have been reserved for this project, the intention is -that the game will be delivered in week 17. Any delay/resit will take place between -weeks 17 and 20. A rough planning can be found in \cref{tab:planning}. +The customer specified multiple deliverables throughout the 20 weeks of this project. Despite the fact that 20 weeks have been reserved for this project, the game will be delivered in week 17. Any delay/resit will take place between weeks 17 and 20. A rough planning can be found in \cref{tab:planning}. \begin{table} \begin{tabularx}{\linewidth}{lX} @@ -71,10 +61,9 @@ weeks 17 and 20. A rough planning can be found in \cref{tab:planning}. \textbf{Week\#} & \textbf{Deliverable}\\ \midrule 4 & Project Plan\\ - 7 & Requirements document\\ + 7 & Some POCs\\ 10 & POCs and Design document\\ - 17 & Game engine, Validation application, Research document, and Qualification - document\\ + 17 & Game engine, \emph{validation application}\\ \bottomrule \end{tabularx} \caption{Planning} @@ -83,10 +72,10 @@ weeks 17 and 20. A rough planning can be found in \cref{tab:planning}. \section{Risks} -\subsection{Techincal Risks} +\subsection{Technical Risks} \begin{description} - \item[Multiplatform] The team works in both linux and windows, which poses a risk + \item[Multiplatform] The team works in both Linux and windows, which poses a risk for the development if there is a platform dependency. \item[Integration] Users can make a wrong integration causing for delay or risk of losing code. @@ -98,21 +87,22 @@ weeks 17 and 20. A rough planning can be found in \cref{tab:planning}. \item[Scope Expansion] There is a risk of creating a scope that is bigger than the requirements. Lack of Team Collaboration: Insufficient collaboration among team members may hinder progress. + \item[Lack of Team Collaboration] Within the team a lack of collaboration can result in miscommunication or delay in work. + \item[Falling out of specific team member] Within the team the scrum master and integrator have additional roles. If one or both members can not continue it can hinder progress of the project. \end{description} \subsection{Measures} \begin{description} \item[Multiplatform] The team can switch any time to a single platform, so this - risk is metigated. + risk is mitigated. \item[Integration] By following standards and having an integrator, which checks - every pull request, this risk is minimilised. + every pull request, this risk is minimized. \item[Scope Expansion] By writing detailed requirements and having weekly team meetings, to check if the progress is within the scope, should be sufficient to decrease the risk. - \item[Lack of Team Collaboration] Weekly team meetings will result in collaboration - among team members and discussing what each other tasks is, will decease this - risk. + \item[Lack of Team Collaboration] Weekly team meetings will result in collaboration among team members and discussing what each other tasks is, will decease this risk. + \item[Falling out of specific team member] The scrum master can be taken over by any other team member. All tools (e.g. scrum board) are open to all members. The tasks of the integrator can be taken over by the team. Within GitHub the team as a whole has the same rights as the integrator. \end{description} \section{Documentation} @@ -128,11 +118,8 @@ This project consists of seven main documents:\noparbreak project, including timelines, milestones, roles, and responsibilities. \item[Requirements] Details the requirements and user stories, including both functional and non-functional requirements. - \item[Research] Consists of all research related to this project. \item[Design] Describes the design choices, including architecture, user interface, and system components. - \item[Qualification] Includes test cases, test plans, and quality measures to - ensure the project meets its requirements and standards. \item[Working hours] A table which includes all working hours of each team member. \item[API Reference] Details the available endpoints, request and response formats, authentication methods, error codes, and examples for interacting with the @@ -152,28 +139,28 @@ protocols for handling absences or delays, guidelines for addressing inconsisten participation, and procedures for weekly updates and meetings. All team members reviewed and agreed to these terms. -\subsection{Project roles} +\subsection{Project Roles} \begin{description} \item[Loek Le Blansch] Integrator \item[Wouter Boerenkamps] Project Member \item[Jaro Rutjes] Team Leader / Scrum Master - \item[Max Smits] Project Member + \item[Max Smits] Project Member / Product Owner \item[Niels Stunnebrink] Project Member \end{description} -\subsection{Work hours} +\subsection{Work Hours} Each project member will keep track of their own working hours and add them to the `file'. -\subsection{Absence or delay} +\subsection{Absence or Delay} -If a project member is going to be absent or delayed, they are required to -notify the team through either WhatsApp or Outlook. Additionally, the teacher +If a project member is going to be absent or delayed, they are required to +notify the team through either WhatsApp or Outlook. Additionally, the teacher should be informed of the absence as well. -\subsection{Inconsistent participation} +\subsection{Inconsistent Participation} Inconsistent participation will be addressed in a structured manner: @@ -192,9 +179,9 @@ will be necessary in such cases. However, if the inconsistency is due to other factors, potential repercussions may include additional assignments or actions as determined by the project supervisor. -A team member is considered to have inconsistent participation if their hours -are significantly behind the team’s average or if tasks are not completed -without valid reasons. It is essential that any concerns regarding a team +A team member is considered to have inconsistent participation if their hours +are significantly behind the team’s average or if tasks are not completed +without valid reasons. It is essential that any concerns regarding a team member's performance, should be resolved through unanimous agreement within the team. \subsection{Weekly Update} @@ -204,9 +191,9 @@ before 12:00 on Friday. Personal updates may also be included and will be confidential between the team member, the Team Leader, and/or the teacher, if requested. -Jaro Rutjes will compile and send a team update to the project supervisor, Bob -van der Putten, also by Friday. This update will include technical information -on what has been accomplished, plans for upcoming work, and an overview of the +Jaro Rutjes will compile and send a team update to the project supervisor, Bob +van der Putten, also by Friday. This update will include technical information +on what has been accomplished, plans for upcoming work, and an overview of the team's overall progress. \subsection{Weekly Meetings} @@ -222,8 +209,7 @@ project needs. % Information about how and when Scrum will be used in this project (using Miro). \section{Scrum (Miro)} -The team will start using scrum after the initial phase, of structering the project, -is finished. This phase is over when proof of concepts are being made. +The team starts using scrum after the initial phase, of structuring the project, is finished. This phase is finished after a initial design of the product is made. \subsection{Scrum Board} @@ -249,43 +235,31 @@ To manage tasks effectively: \begin{itemize} \item A task from the \emph{Current Sprint} tab should be selected and moved to the - \emph{In Progress} tab when work begins. + \emph{In Progress} tab when work begins. \item The status of the task should be updated to \emph{In Progress} as soon as work starts. \item Once the task is completed and reviewed, it should be moved to the \emph{Done} tab, and its status should be updated to \emph{Done}. \end{itemize} -Each task or user story will be assigned user points, which indicate the relative -size or complexity of the task compared to these examples. -% TODO: add examples +Each task or user story will be assigned user points, which indicate the relative size or complexity of the task. Examples of certain tasks will be available in the scrumboard. \subsection{Burn Down Chart} The Burn Down Chart will be generated using Excel from the Scrum board data every week. Each user story or task marked as done, will burn the chart downwards. This -Burn Down Chart is shared in the weekly updates with the team and the project -supervisor. +Burn Down Chart is shared in the weekly updates with the team. % Information regarding the git workflow of this project. -% TODO: Diagram explaining the workflow \section{Git Workflow} GitHub is used for version management of both code \autocite{crepe:code-repo} and documentation \autocite{crepe:docs-repo}, each in its own respective repository. This -keeps the documentation and code seperate, resulting in ordened and manageable +keeps the documentation and code separate, resulting in ordered and manageable repositories. -\subsection{Git New Branch} - -% TODO: add here details from contributing.md? - -\subsection{Git Merge To Master} - -% TODO: add here diagram on what actions are taken before merge. - -\subsection{Code Standard} +\subsection{Code Standard and Git Workflow} -The code standard can be found in the contributing.md \autocite{crepe:code-standard}. +The code standard and the git workflow can be found in the contributing.md \autocite{crepe:code-standard}. \end{document} diff --git a/sources.bib b/sources.bib index 586af9c..a34f739 100644 --- a/sources.bib +++ b/sources.bib @@ -29,7 +29,7 @@ @misc{crepe:docs-repo, author = {Loek Le Blansch and Wouter Boerenkamps and Jaro Rutjes and Max Smits and Niels Stunnebrink}, title = {Crepe Documentation Repository}, - url = {https://github.com/lonkaars}, + url = {https://github.com/lonkaars/crepe-docs}, date = {2024-09-10}, } @@ -47,12 +47,6 @@ date = {2024-09-10}, } -@report{crepe:requirements, - author = {Loek Le Blansch and Wouter Boerenkamps and Jaro Rutjes and Max Smits and Niels Stunnebrink}, - title = {Requirements}, - date = {2024-09-18}, -} - @online{lib:miniaudio, title = {miniaudio - A single file audio playback and capture library.}, % author = {David Reid}, @@ -91,6 +85,18 @@ urldate = {2024-09-18}, } +@report{crepe:requirements, + author = {Loek Le Blansch and Wouter Boerenkamps and Jaro Rutjes and Max Smits and Niels Stunnebrink}, + title = {Requirements}, + date = {2024-09-18}, +} + +@misc{crepe:validation-application, + author = {Loek Le Blansch and Wouter Boerenkamps and Jaro Rutjes and Max Smits and Niels Stunnebrink}, + title = {Validation Application}, + date = {2024-09-10}, +} + @misc{github:awesome-ecs, author = {Sangjun Lee}, title = {Awesome Entity Component System}, |