guns4d-cd2025/docs/structure_spec (app.diagrams.net).drawio
2023-08-08 13:43:36 -07:00

311 lines
24 KiB
Plaintext

<mxfile host="app.diagrams.net" modified="2023-08-08T02:26:17.905Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" etag="44jzb9uK1u4jJbBgrsUi" version="21.6.6" type="device">
<diagram name="Page-1" id="hjH4469px_Ex89IZIbiB">
<mxGraphModel dx="1049" dy="561" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="XBcHE4cyeVAlC1C74syX-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="W6xmUVEbs_vsLZUt_kYx-8" target="W6xmUVEbs_vsLZUt_kYx-12">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="520" y="680" />
<mxPoint x="405" y="680" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-12" value="Instantiate" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="XBcHE4cyeVAlC1C74syX-11">
<mxGeometry x="0.4996" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-102" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#d5e8d4;strokeColor=#82b366;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-8" target="W6xmUVEbs_vsLZUt_kYx-73" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="676" y="630" as="sourcePoint" />
<mxPoint x="714" y="775" as="targetPoint" />
<Array as="points">
<mxPoint x="550" y="720" />
<mxPoint x="700" y="720" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-5" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="740" y="580" as="targetPoint" />
<mxPoint x="830" y="545" as="sourcePoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-15" value="Creates and updates" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="W6xmUVEbs_vsLZUt_kYx-10">
<mxGeometry x="-0.261" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-5" target="W6xmUVEbs_vsLZUt_kYx-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-37" value="Creates &amp;amp; updates" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="W6xmUVEbs_vsLZUt_kYx-11" vertex="1" connectable="0">
<mxGeometry x="-0.3348" y="1" relative="1" as="geometry">
<mxPoint x="-17" y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-5" target="W6xmUVEbs_vsLZUt_kYx-14" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="820" y="510" as="sourcePoint" />
<mxPoint x="950" y="580" as="targetPoint" />
<Array as="points">
<mxPoint x="990" y="510" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-61" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fillColor=#d80073;strokeColor=#A50040;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-5" target="W6xmUVEbs_vsLZUt_kYx-14" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="960" y="530" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-64" value="Pass gun controls def" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="W6xmUVEbs_vsLZUt_kYx-61" vertex="1" connectable="0">
<mxGeometry x="-0.3137" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-5" value="Player handler" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="680" y="480" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-8" target="W6xmUVEbs_vsLZUt_kYx-9" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="600" y="560" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-32" value="Bone info" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="W6xmUVEbs_vsLZUt_kYx-28" vertex="1" connectable="0">
<mxGeometry x="0.1556" y="1" relative="1" as="geometry">
<mxPoint x="-12" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.582;entryY=-0.003;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-8" target="W6xmUVEbs_vsLZUt_kYx-71" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="520" y="680" />
<mxPoint x="590" y="680" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-77" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-8" target="W6xmUVEbs_vsLZUt_kYx-71" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="550" y="670" />
<mxPoint x="550" y="670" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-78" value="Bone info &amp;amp;&lt;br&gt;gun direction" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="W6xmUVEbs_vsLZUt_kYx-77" vertex="1" connectable="0">
<mxGeometry x="0.1298" y="-2" relative="1" as="geometry">
<mxPoint y="-5" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-75" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-8" target="W6xmUVEbs_vsLZUt_kYx-73" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="520" y="680" />
<mxPoint x="730" y="680" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-76" value="Creates &amp;amp; updates" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="W6xmUVEbs_vsLZUt_kYx-75" vertex="1" connectable="0">
<mxGeometry x="-0.8968" y="-1" relative="1" as="geometry">
<mxPoint x="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-95" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;entryX=0.875;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-8" target="W6xmUVEbs_vsLZUt_kYx-88" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-8" value="Gun" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="460" y="580" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-9" value="model handler" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="680" y="580" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="W6xmUVEbs_vsLZUt_kYx-12" target="W6xmUVEbs_vsLZUt_kYx-19">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-12" value="Bullet ray(s)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="345" y="790" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-14" target="W6xmUVEbs_vsLZUt_kYx-8" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="990" y="660" />
<mxPoint x="615" y="660" />
<mxPoint x="615" y="625" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-7" value="call :fire() or other methods" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="wAXQPkzS34ZOuWmKrVVe-5" vertex="1" connectable="0">
<mxGeometry x="-0.0751" relative="1" as="geometry">
<mxPoint x="-20" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-14" value="Control handler" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="930" y="580" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" target="W6xmUVEbs_vsLZUt_kYx-5" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="740" y="330" as="sourcePoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-35" value="Creates" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="W6xmUVEbs_vsLZUt_kYx-17" vertex="1" connectable="0">
<mxGeometry x="-0.1753" y="2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-16" value="on joinplayer" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="680" y="270" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-19" value="Target or node" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
<mxGeometry x="260" y="790" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-38" value="Creates &amp;amp; updates" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="1" vertex="1" connectable="0">
<mxGeometry x="869.9966666666667" y="510" as="geometry" />
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-58" target="W6xmUVEbs_vsLZUt_kYx-121" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-58" value="Gun class" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
<mxGeometry x="867.5" y="245" width="80" height="100" as="geometry" />
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.385;entryY=0.052;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="W6xmUVEbs_vsLZUt_kYx-67" target="W6xmUVEbs_vsLZUt_kYx-83">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-67" value="attachments" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="1045" y="230" width="80" height="100" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-71" value="Sprite scope" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="520" y="790" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-73" value="Physical scope" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="670" y="790" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-83" target="W6xmUVEbs_vsLZUt_kYx-121" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-88" target="W6xmUVEbs_vsLZUt_kYx-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-10" value="Predict client&lt;br&gt;view or request&lt;br&gt;directly" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="wAXQPkzS34ZOuWmKrVVe-35">
<mxGeometry x="-0.1935" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-88" value="External server side modifications" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="210" y="565" width="135" height="90" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-109" value="&lt;h1&gt;&lt;i&gt;&lt;u&gt;guns4d structure specification diagram&lt;/u&gt;&lt;/i&gt;&lt;/h1&gt;" style="text;html=1;strokeColor=#FFFFFF;fillColor=#fff2cc;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;align=center;" parent="1" vertex="1">
<mxGeometry x="40" y="30" width="510" height="40" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-114" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#FFFFFF;" parent="1" vertex="1">
<mxGeometry x="40" y="90" width="120" height="250" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-115" value="process" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" parent="1" vertex="1">
<mxGeometry x="50" y="110" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-118" value="class&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;" parent="1" vertex="1">
<mxGeometry x="50" y="165" width="100" height="45" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-120" value="Instance" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="50" y="230" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-121" value="&lt;font style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;background-color: rgb(255, 255, 255);&quot;&gt;create correct gun by finding correct class and modifying properties by item metadata&lt;/span&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="835" y="375" width="145" height="80" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-127" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="W6xmUVEbs_vsLZUt_kYx-5" target="W6xmUVEbs_vsLZUt_kYx-121" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="775" y="460" as="sourcePoint" />
<mxPoint x="825" y="410" as="targetPoint" />
<Array as="points">
<mxPoint x="770" y="455" />
<mxPoint x="770" y="415" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-130" value="inactive" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#C3ABD0;fillColor=#e1d5e7;" parent="1" vertex="1">
<mxGeometry x="50" y="290" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.991;entryY=0.611;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1226.08" y="609.92" as="sourcePoint" />
<mxPoint x="1050.0000000000005" y="609.5799999999998" as="targetPoint" />
<Array as="points">
<mxPoint x="1226.08" y="609.92" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-17" value="Player controls" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="wAXQPkzS34ZOuWmKrVVe-21">
<mxGeometry x="0.0076" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1260" y="449.9999999999999" as="targetPoint" />
<mxPoint x="1260" y="530" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-131" value="Gun holder" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
<mxGeometry x="1235" y="540" width="50" height="100" as="geometry" />
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-8" value="" style="shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;rotation=-180;position2=1;base=45;strokeColor=none;fillColor=#fff2cc;" parent="1" vertex="1">
<mxGeometry x="800" y="670" width="120" height="120" as="geometry" />
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-11" value="&lt;font style=&quot;font-size: 8px;&quot;&gt;Note that this is the behavior from the API layer (via properties.controls), but in the base class there&#39;s no interaction between these two components by default&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="800" y="710" width="115" height="70" as="geometry" />
</mxCell>
<mxCell id="W6xmUVEbs_vsLZUt_kYx-83" value="held item string and metadata" style="ellipse;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="1045" y="380" width="105" height="70" as="geometry" />
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" target="W6xmUVEbs_vsLZUt_kYx-83" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1200" y="414.9999999999999" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0.181;exitY=0.967;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" source="wAXQPkzS34ZOuWmKrVVe-42" target="W6xmUVEbs_vsLZUt_kYx-14" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1225" y="448" />
<mxPoint x="1225" y="510" />
<mxPoint x="1020" y="510" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-45" value="on_use (etc) &lt;br&gt;callbacks" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="wAXQPkzS34ZOuWmKrVVe-43" vertex="1" connectable="0">
<mxGeometry x="-0.0218" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wAXQPkzS34ZOuWmKrVVe-42" value="Item / Itemstack" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="1200" y="390" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="497.5" y="470" as="sourcePoint" />
<mxPoint x="497" y="580" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-9" value="Bullet definition" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="XBcHE4cyeVAlC1C74syX-8">
<mxGeometry x="-0.6286" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-7" value="held item string and metadata" style="ellipse;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
<mxGeometry x="445" y="400" width="105" height="70" as="geometry" />
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="XBcHE4cyeVAlC1C74syX-18" target="XBcHE4cyeVAlC1C74syX-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="XBcHE4cyeVAlC1C74syX-18" value="Bullet class" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
<mxGeometry x="457.5" y="230" width="80" height="100" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>