diff options
author | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-11-02 14:19:17 +0100 |
---|---|---|
committer | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-11-02 14:19:17 +0100 |
commit | d98d21ba947f79f35dda0aa5f1b9bdb2c4f9f4d4 (patch) | |
tree | 0d78a8551f4ead8203645e9397f1875099ef0874 | |
parent | 0cfe85c3a8766992f9b04c082143283698d756d7 (diff) |
design
-rw-r--r-- | design.tex | 120 | ||||
-rw-r--r-- | figs.drawio | 784 | ||||
-rw-r--r-- | img/AssesManager.png | bin | 0 -> 571725 bytes | |||
-rw-r--r-- | img/Rendering.png | bin | 0 -> 654711 bytes | |||
-rw-r--r-- | img/flowchart_rendering.png | bin | 0 -> 631423 bytes | |||
-rw-r--r-- | img/poc-camera.pdf | bin | 0 -> 169814 bytes | |||
-rw-r--r-- | img/texture.png | bin | 0 -> 593444 bytes |
7 files changed, 762 insertions, 142 deletions
@@ -115,7 +115,96 @@ the main part of the \gls{ecs}. The design of these eight systems in combination \section{Design} -% \subsection{Rendering} +\subsection{Texture} +The textures in our game engine are represented by the \codeinline{Texture} class. It is implemented a \gls{facade} around the \gls{sdl} library. + +\subsubsection{Architecture} +\Cref{fig:class-texture} shows a class diagram of the texture \gls{facade}. It contains the following classes: + +\begin{description} + \item[SDLContext] This is a facade around the \codeinline{SDL2} library which is used around different parts of the engine, + and is therefore implemented as a singleton. + This class is friends with \codeinline{Texture}, \codeinline{LoopManager}, \codeinline{RenderSystem} and \codeinline{AnimatorSystem}. + \item[Texture] This is a wrapper around the \codeinline{SDL_Texture} class, and uses + cr\^epe's \codeinline{Asset} class to load an Texture instead. +\end{description} + +\begin{figure} + \centering + \includegraphics[width=\textwidth]{img/texture.png} + \caption{User texture class diagram} + \label{fig:class-texture} +\end{figure} + + +\subsection{AssetManager} +The AssetManager is a \gls{api} class that the user can use to make a \codeinline{Asset} available from different scenes. + +\subsubsection{Architecture} +\Cref{fig:class-assetmanager} shows a class diagram of the AssetManager. It contains the following classes: + +\begin{description} + \item[AssetManager] is a Singleton class, meaning only one instance of this class exists throughout the application. + This ensures a single point of access and control over asset management, simplifying resource handling and avoiding duplicated assets in memory. +\end{description} + +\begin{figure} + \centering + \includegraphics[width= 0.5\textwidth]{img/AssesManager.png} + \caption{User AssetManager class diagram} + \label{fig:class-assetmanager} +\end{figure} + +\subsection{Rendering} +Every game engine has an rendering structure to present all the different enities and components on the screen. + +\subsubsection{Architecture} +\Cref{fig:class-rendering} shows a class diagram of the RenderSystem. It contains the following classes: + +\begin{itemize} + \item The system architecture is centered around rendering and component management, with the following key components: + \begin{enumerate} + \item \emph{System} - an interface class, containing the virtual \codeinline{update()} function. + \item \emph{RenderSystem} - a derived class of \codeinline{System} responsible for rendering operations. \end{enumerate} + \item The \codeinline{System::get_instance()} function provides a static, singleton instance for managing system-wide operations. + \item The \codeinline{RenderSystem} class implements various rendering functions: + \begin{itemize} + \item \codeinline{sort_layers()} - organizes the rendering layers. + \item \codeinline{clear_screen()} - clears the screen prior to rendering. + \item \codeinline{update_sprites()} - updates sprite positions and states. + \item \codeinline{update_camera()} - manages the camera view. + \item \codeinline{present_screen()} - presents the final rendered image to the screen. + \end{itemize} + \item The \emph{SdlContext} class, another singleton, manages the \gls(SDL) and has a friendship relationship with \codeinline{ComponentManager} + for tighter integration with component management. + \item Components are organized as follows: + \begin{itemize} + \item The \emph{Component} base class allows for generic handling of components. + \item Derived component classes include: + \begin{itemize} + \item \emph{Sprite} - represents visual elements with attributes like \codeinline{sprite}, + \codeinline{color}, \codeinline{flip}, \codeinline{sortingLayer}, and \codeinline{orderInLayer}. + \item \emph{Transform} - manages positional attributes, including \codeinline{position}, \codeinline{rotation}, and \codeinline{scale}. + \end{itemize} + \end{itemize} + \item Both \codeinline{Sprite} and \codeinline{Transform} components provide a \codeinline{get_instances_max()} function to retrieve the maximum instance count. +\end{itemize} + +\begin{figure} + \centering + \includegraphics[width=\textwidth]{img/Rendering.png} + \caption{System Rendering class diagram} + \label{fig:class-rendering} +\end{figure} + +\subsubsection{System} +\begin{figure} + \centering + \includegraphics[width=\textwidth]{img/flowchart_rendering.png} + \caption{System Rendering flowchart } + \label{fig:class-renderingflowchart} +\end{figure} + % \subsection{Physics} @@ -433,5 +522,34 @@ was later converted to a full audio \gls{facade}, which is currently part of the cr\^epe engine. The \gls{poc} using the audio \gls{facade} is available from the same repository, under the \codeinline{src/example/audio_internal.cpp} file. +\subsection{Camera} +\label{poc:camera} + +The camera \gls{poc} \autocite[camera example]{crepe:code-repo} consists of +the following:\noparbreak + +\begin{itemize} + \item An \codeinline{on_key_pressed} function, which listens for key presses and adjusts camera position and zoom based on key inputs. + \item A user-defined script class (\codeinline{MyCameraScript}) derived from \codeinline{Script}, implementing only the \codeinline{update()} function. + To update the camera movements and zoom. + \item A main function that— + \begin{itemize} + \item Subscribes the \codeinline{on_key_pressed} function to handle \codeinline{KeyPressedEvent} events. + \item Creates a \codeinline{GameObject} for the camera and adds \codeinline{Camera} and \codeinline{BehaviorScript} components, + with \codeinline{MyCameraScript} attached to manage the camera’s transformation. + \item Instantiates a background \codeinline{GameObject} with \codeinline{Transform} and \codeinline{Sprite} components, loading an external texture as its background. + \end{itemize} +\end{itemize} + +Running this \gls{poc} allows for controlled camera movement and zoom in response to key inputs. The \codeinline{MyCameraScript::update} function ensures that these transformations are applied each frame, as demonstrated by the output in \cref{fig:poc-output-camera}. + + + +\begin{figure} + \centering + \fitimg{\includegraphics[scale=0.7]{img/poc-camera.pdf}} + \caption{camera \glsfmtshort{poc} output} + \label{fig:poc-output-camera} +\end{figure} \end{document} diff --git a/figs.drawio b/figs.drawio index 3dec3aa..8a9e7cd 100644 --- a/figs.drawio +++ b/figs.drawio @@ -1,6 +1,6 @@ -<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.17" pages="10"> +<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.17" pages="14"> <diagram id="ehgrrEZq6aIl9GSG0JpL" name="Main"> - <mxGraphModel dx="1793" dy="883" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="3300" pageHeight="2339" math="0" shadow="0"> + <mxGraphModel dx="1368" dy="838" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="3300" pageHeight="2339" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> @@ -656,7 +656,7 @@ <mxCell id="YKgVrhEJGfdfAljirImL-1" value="+forceOvertime : Vector2" 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=#0000FF;" parent="V-ZVI1K5bxIVrfWjpJuH-1" vertex="1"> <mxGeometry y="162" width="390" height="17" as="geometry" /> </mxCell> - <mxCell id="iLlbnCJIxoT-n0g-ZMnA-8" value="+Boundary : Vector2" 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=#0000FF;" vertex="1" parent="V-ZVI1K5bxIVrfWjpJuH-1"> + <mxCell id="iLlbnCJIxoT-n0g-ZMnA-8" value="+Boundary : Vector2" 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=#0000FF;" parent="V-ZVI1K5bxIVrfWjpJuH-1" vertex="1"> <mxGeometry y="179" width="390" height="17" as="geometry" /> </mxCell> <mxCell id="V-ZVI1K5bxIVrfWjpJuH-5" 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;fontColor=#0000FF;strokeColor=#0000FF;" parent="V-ZVI1K5bxIVrfWjpJuH-1" vertex="1"> @@ -743,13 +743,13 @@ <mxCell id="ZHgyX9xX1EySbdOx-EKd-3" value="+ aspect_width : double" 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="ZHgyX9xX1EySbdOx-EKd-1" vertex="1"> <mxGeometry y="43" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="xyZsm_uoETzsuu8GtZ24-1" value="+ aspect_height : double" 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="ZHgyX9xX1EySbdOx-EKd-1"> + <mxCell id="xyZsm_uoETzsuu8GtZ24-1" value="+ aspect_height : double" 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="ZHgyX9xX1EySbdOx-EKd-1" vertex="1"> <mxGeometry y="60" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="xyZsm_uoETzsuu8GtZ24-2" value="+ x,y : double" 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="ZHgyX9xX1EySbdOx-EKd-1"> + <mxCell id="xyZsm_uoETzsuu8GtZ24-2" value="+ x,y : double" 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="ZHgyX9xX1EySbdOx-EKd-1" vertex="1"> <mxGeometry y="77" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="xyZsm_uoETzsuu8GtZ24-3" value="+ zoom : double" 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="ZHgyX9xX1EySbdOx-EKd-1"> + <mxCell id="xyZsm_uoETzsuu8GtZ24-3" value="+ zoom : double" 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="ZHgyX9xX1EySbdOx-EKd-1" vertex="1"> <mxGeometry y="94" width="160" height="17" as="geometry" /> </mxCell> <mxCell id="ZHgyX9xX1EySbdOx-EKd-5" 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="ZHgyX9xX1EySbdOx-EKd-1" vertex="1"> @@ -1139,7 +1139,7 @@ <Array as="points" /> </mxGeometry> </mxCell> - <mxCell id="iLlbnCJIxoT-n0g-ZMnA-2" 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;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1"> + <mxCell id="iLlbnCJIxoT-n0g-ZMnA-2" 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;edgeStyle=orthogonalEdgeStyle;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="1950" y="653" as="sourcePoint" /> <mxPoint x="1870" y="577" as="targetPoint" /> @@ -1148,17 +1148,17 @@ </Array> </mxGeometry> </mxCell> - <mxCell id="iLlbnCJIxoT-n0g-ZMnA-3" value="0..1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="iLlbnCJIxoT-n0g-ZMnA-2"> + <mxCell id="iLlbnCJIxoT-n0g-ZMnA-3" value="0..1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="iLlbnCJIxoT-n0g-ZMnA-2" vertex="1" connectable="0"> <mxGeometry x="-0.7119" y="-1" relative="1" as="geometry"> <mxPoint x="-21" y="14" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="iLlbnCJIxoT-n0g-ZMnA-4" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#FF0000;" vertex="1" connectable="0" parent="iLlbnCJIxoT-n0g-ZMnA-2"> + <mxCell id="iLlbnCJIxoT-n0g-ZMnA-4" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#FF0000;" parent="iLlbnCJIxoT-n0g-ZMnA-2" 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="iLlbnCJIxoT-n0g-ZMnA-5" 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;edgeStyle=orthogonalEdgeStyle;strokeColor=#0000FF;" edge="1" parent="1" source="V-ZVI1K5bxIVrfWjpJuH-1" target="5-8bWhzpOWirDYeo3-Cj-122"> + <mxCell id="iLlbnCJIxoT-n0g-ZMnA-5" 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;edgeStyle=orthogonalEdgeStyle;strokeColor=#0000FF;" parent="1" source="V-ZVI1K5bxIVrfWjpJuH-1" target="5-8bWhzpOWirDYeo3-Cj-122" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="2004.97" y="606" as="sourcePoint" /> <mxPoint x="1924.97" y="530" as="targetPoint" /> @@ -1167,66 +1167,66 @@ </Array> </mxGeometry> </mxCell> - <mxCell id="iLlbnCJIxoT-n0g-ZMnA-7" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="iLlbnCJIxoT-n0g-ZMnA-5"> + <mxCell id="iLlbnCJIxoT-n0g-ZMnA-7" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="iLlbnCJIxoT-n0g-ZMnA-5" 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="3FSnYpZvSTWzFvyN4hJx-1" value="<<enumeration>>
BodyType" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;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"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-1" value="<<enumeration>>
BodyType" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;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="1" vertex="1"> <mxGeometry x="320" y="1380" width="160" height="116" as="geometry"> <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-2" value="static" 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=#0000FF;" vertex="1" parent="3FSnYpZvSTWzFvyN4hJx-1"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-2" value="static" 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=#0000FF;" parent="3FSnYpZvSTWzFvyN4hJx-1" vertex="1"> <mxGeometry y="40" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-3" value="dynamic" 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=#0000FF;" vertex="1" parent="3FSnYpZvSTWzFvyN4hJx-1"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-3" value="dynamic" 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=#0000FF;" parent="3FSnYpZvSTWzFvyN4hJx-1" vertex="1"> <mxGeometry y="57" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-6" value="kinematic" 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=#0000FF;" vertex="1" parent="3FSnYpZvSTWzFvyN4hJx-1"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-6" value="kinematic" 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=#0000FF;" parent="3FSnYpZvSTWzFvyN4hJx-1" vertex="1"> <mxGeometry y="74" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-4" 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="3FSnYpZvSTWzFvyN4hJx-1"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-4" 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="3FSnYpZvSTWzFvyN4hJx-1" vertex="1"> <mxGeometry y="91" width="160" height="8" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-5" 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="3FSnYpZvSTWzFvyN4hJx-1"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-5" 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="3FSnYpZvSTWzFvyN4hJx-1" vertex="1"> <mxGeometry y="99" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-7" value="PhysicsConstraints" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;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"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-7" value="PhysicsConstraints" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;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="1" vertex="1"> <mxGeometry x="320" y="1510" width="160" height="106" as="geometry"> <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-8" value="+x: bool" 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=#0000FF;" vertex="1" parent="3FSnYpZvSTWzFvyN4hJx-7"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-8" value="+x: bool" 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=#0000FF;" parent="3FSnYpZvSTWzFvyN4hJx-7" vertex="1"> <mxGeometry y="30" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-9" value="+y: bool" 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=#0000FF;" vertex="1" parent="3FSnYpZvSTWzFvyN4hJx-7"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-9" value="+y: bool" 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=#0000FF;" parent="3FSnYpZvSTWzFvyN4hJx-7" vertex="1"> <mxGeometry y="47" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-10" value="+rotation: bool" 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=#0000FF;" vertex="1" parent="3FSnYpZvSTWzFvyN4hJx-7"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-10" value="+rotation: bool" 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=#0000FF;" parent="3FSnYpZvSTWzFvyN4hJx-7" vertex="1"> <mxGeometry y="64" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-11" 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="3FSnYpZvSTWzFvyN4hJx-7"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-11" 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="3FSnYpZvSTWzFvyN4hJx-7" vertex="1"> <mxGeometry y="81" width="160" height="8" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-12" 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="3FSnYpZvSTWzFvyN4hJx-7"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-12" 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="3FSnYpZvSTWzFvyN4hJx-7" vertex="1"> <mxGeometry y="89" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-13" value="<<enumeration>>
DetectionMode" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;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"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-13" value="<<enumeration>>
DetectionMode" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;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="1" vertex="1"> <mxGeometry x="320" y="1630" width="160" height="99" as="geometry"> <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-14" value="Discrete" 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=#0000FF;" vertex="1" parent="3FSnYpZvSTWzFvyN4hJx-13"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-14" value="Discrete" 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=#0000FF;" parent="3FSnYpZvSTWzFvyN4hJx-13" vertex="1"> <mxGeometry y="40" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-15" value="Continuous" 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=#0000FF;" vertex="1" parent="3FSnYpZvSTWzFvyN4hJx-13"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-15" value="Continuous" 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=#0000FF;" parent="3FSnYpZvSTWzFvyN4hJx-13" vertex="1"> <mxGeometry y="57" width="160" height="17" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-17" 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="3FSnYpZvSTWzFvyN4hJx-13"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-17" 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="3FSnYpZvSTWzFvyN4hJx-13" vertex="1"> <mxGeometry y="74" width="160" height="8" as="geometry" /> </mxCell> - <mxCell id="3FSnYpZvSTWzFvyN4hJx-18" 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="3FSnYpZvSTWzFvyN4hJx-13"> + <mxCell id="3FSnYpZvSTWzFvyN4hJx-18" 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="3FSnYpZvSTWzFvyN4hJx-13" vertex="1"> <mxGeometry y="82" width="160" height="17" as="geometry" /> </mxCell> </root> @@ -2477,408 +2477,910 @@ </mxGraphModel> </diagram> <diagram id="HwAwsUWtoMPbd-VC63Ug" name="Rendering/AssetManager"> - <mxGraphModel dx="3068" dy="1938" 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"> + <mxGraphModel dx="4740" dy="2962" 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="HgKoQxlyUx1tn9zsXLrm-1" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=none;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-1" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=none;" parent="1" vertex="1"> <mxGeometry x="-1670" y="-610" width="2470" height="560" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-2" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=none;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-2" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=none;" parent="1" vertex="1"> <mxGeometry x="-1673" y="-37" width="2470" height="1160" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-3" value="Texture" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-3" value="Texture" style="swimlane;fontStyle=2;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;" parent="1" vertex="1"> <mxGeometry x="-1250" y="234.32" width="240" height="164" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-4" value="+ Texture(path, reload)" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-3"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-4" value="+ Texture(path, reload)" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-3" vertex="1"> <mxGeometry y="26" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-5" value="+ Texture(unique_ptr<Resource>, reload)" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-3"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-5" value="+ Texture(unique_ptr<Asset>, reload)" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-3" vertex="1"> <mxGeometry y="52" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-6" value="~Texture" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-3"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-6" value="~Texture" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-3" vertex="1"> <mxGeometry y="78" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-7" value="- 	void load(std::unique_ptr<api::Resource> res);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-3"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-7" value="- 	void load(std::unique_ptr<Asset> res);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-3" vertex="1"> <mxGeometry y="104" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-8" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-3"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-8" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-3" vertex="1"> <mxGeometry y="130" width="240" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-9" value="- SDL_texture unique_ptr" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-3"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-9" value="- SDL_texture shared_ptr" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-3" vertex="1"> <mxGeometry y="138" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-10" value="<<singleton>>
AssetManager" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=38;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-10" value="<<singleton>>
AssetManager" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=38;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="1" vertex="1"> <mxGeometry x="-1620" y="-440" width="380" height="247" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-11" value="- static AssetManager & get_instance();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-10"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-11" value="- static AssetManager & get_instance();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-10" vertex="1"> <mxGeometry y="38" width="380" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-12" value="- AssetManager();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-10"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-12" value="- AssetManager();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-10" vertex="1"> <mxGeometry y="64" width="380" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-13" value="- virtual ~AssetManager()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-10"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-13" value="- virtual ~AssetManager()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-10" vertex="1"> <mxGeometry y="90" width="380" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-14" value="template <typename resource>
std::shared_ptr<resource> cache(path, bool reload)" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-10"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-14" value="template <typename resource>
std::shared_ptr<resource> cache(path, bool reload)" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-10" vertex="1"> <mxGeometry y="116" width="380" height="35" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-15" value="- virtual ~AssetManager()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-10"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-15" value="- virtual ~AssetManager()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-10" vertex="1"> <mxGeometry y="151" width="380" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-16" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-10"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-16" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-10" vertex="1"> <mxGeometry y="177" width="380" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-17" value="template <typename resource>
- map<path, shared_ptr<resource>> cache" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-10"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-17" value="template <typename resource>
- map<path, shared_ptr<resource>> cache" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-10" vertex="1"> <mxGeometry y="185" width="380" height="35" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-18" value="- friend class Texture" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-10"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-18" value="- friend class Texture" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-10" vertex="1"> <mxGeometry y="220" width="380" height="27" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-19" value="Sprite" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-19" value="Sprite" style="swimlane;fontStyle=2;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;" parent="1" vertex="1"> <mxGeometry x="-534.06" y="220" width="240" height="190" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-20" value="+ 	Sprite(crepe::Texture& image, const Color& color, const flip_settings& flip ) : sprite_image(&image), color(color), flip(flip){}
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-19"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-20" value="+ 	Sprite(crepe::Texture& image, const Color& color, const flip_settings& flip ) : sprite_image(&image), color(color), flip(flip){}
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-19" vertex="1"> <mxGeometry y="26" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-21" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-19"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-21" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-19" vertex="1"> <mxGeometry y="52" width="240" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-22" value="shared_ptr<Texture> image" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-19"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-22" value="shared_ptr<Texture> image" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-19" vertex="1"> <mxGeometry y="60" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-23" value="+ Color color" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-19"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-23" value="+ Color color" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-19" vertex="1"> <mxGeometry y="86" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-24" value="+ flip_settings flip" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-19"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-24" value="+ flip_settings flip" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-19" vertex="1"> <mxGeometry y="112" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-25" value="+ uint8_t sortingLayer" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-19"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-25" value="+ uint8_t sortingLayer" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-19" vertex="1"> <mxGeometry y="138" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-26" value="+ uint8_t orderInLayer" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-19"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-26" value="+ uint8_t orderInLayer" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-19" vertex="1"> <mxGeometry y="164" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-27" value="<<singleton>>
SdlContext" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=37;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-27" value="<<singleton>>
SdlContext" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=37;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="1" vertex="1"> <mxGeometry x="-1160" y="-440" width="450" height="361" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-28" value="- SdlContext();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-28" value="- SdlContext();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="37" width="450" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-29" value="virtual ~SdlContext();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-29" value="virtual ~SdlContext();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="63" width="450" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-30" value="- static SdlContext & get_instance();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-30" value="- static SdlContext & get_instance();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="89" width="450" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-31" value="- void draw(const api::Sprite&, const api::Transform&);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-31" value="- void draw(const api::Sprite&, const api::Transform&);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="115" width="450" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-32" value="- void presentScreen();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-32" value="- void presentScreen();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="141" width="450" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-33" value="- void clearScreen();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-33" value="- void clearScreen();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="167" width="450" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-34" value="- void draw(const api::Sprite&, const api::Transform&);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-34" value="- void draw(const api::Sprite&, const api::Transform&);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="193" width="450" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-35" value="- SDL_Texture* setTextureFromPath(const char*);" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-35" value="- SDL_Texture* setTextureFromPath(const char*);" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="219" width="450" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-36" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-36" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="245" width="450" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-37" value="- friend class Texture" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-37" value="- friend class Texture" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="253" width="450" height="27" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-38" value="- friend class RenderSystem" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-38" value="- friend class RenderSystem" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="280" width="450" height="27" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-39" value="- SDL_Window* window" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-39" value="- SDL_Window* window" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="307" width="450" height="27" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-40" value="- SDL_Renderer* renderer" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-40" value="- SDL_Renderer* renderer" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-27" vertex="1"> <mxGeometry y="334" width="450" height="27" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-41" value="RenderSystem" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=25;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-41" value="RenderSystem" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=25;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="1" vertex="1"> <mxGeometry x="-520" y="-324.5" width="240" height="130" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-42" value="- RenderSystem()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-41"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-42" value="- RenderSystem()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-41" vertex="1"> <mxGeometry y="25" width="240" height="22" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-43" value="- ~ RenderSystem()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-41"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-43" value="- ~ RenderSystem()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-41" vertex="1"> <mxGeometry y="47" width="240" height="22" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-44" value="- void SortLayers()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-41"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-44" value="- void SortLayers()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-41" vertex="1"> <mxGeometry y="69" width="240" height="22" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-45" value="+ void update() override" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-41"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-45" value="+ void update() override" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-41" vertex="1"> <mxGeometry y="91" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-46" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-41"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-46" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-41" vertex="1"> <mxGeometry y="117" width="240" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-47" value="<<interface>>
<<singleton>>
System" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=50;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-47" value="<<interface>>
<<singleton>>
System" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=50;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" parent="1" vertex="1"> <mxGeometry x="-520" y="-580" width="240" height="162" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-48" value="+ static System & get_instance();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-47"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-48" value="+ static System & get_instance();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-47" vertex="1"> <mxGeometry y="50" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-49" value="+ virtual void update() = 0;
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-47"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-49" value="+ virtual void update() = 0;
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-47" vertex="1"> <mxGeometry y="76" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-50" value="# System() {};
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-47"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-50" value="# System() {};
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-47" vertex="1"> <mxGeometry y="102" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-51" value="# virtual ~System() {};
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-47"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-51" value="# virtual ~System() {};
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-47" vertex="1"> <mxGeometry y="128" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-52" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-47"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-52" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-47" vertex="1"> <mxGeometry y="154" width="240" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-53" value="Color" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-53" value="Color" style="swimlane;fontStyle=2;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;" parent="1" vertex="1"> <mxGeometry x="-610" y="480" width="400" height="580" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-54" value="+ Color(double red, double green, double blue, double alpha);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-54" value="+ Color(double red, double green, double blue, double alpha);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="26" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-55" value=" + static const Color & get_white();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-55" value=" + static const Color & get_white();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="52" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-56" value=" + static const Color & get_red();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-56" value=" + static const Color & get_red();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="78" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-57" value=" + static const Color & get_green();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-57" value=" + static const Color & get_green();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="104" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-58" value=" + static const Color & get_blue();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-58" value=" + static const Color & get_blue();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="130" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-59" value=" + static const Color & get_cyan();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-59" value=" + static const Color & get_cyan();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="156" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-60" value=" + static const Color & get_magenta();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-60" value=" + static const Color & get_magenta();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="182" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-61" value=" + static const Color & get_yellow();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-61" value=" + static const Color & get_yellow();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="208" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-62" value=" + static const Color & get_black();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-62" value=" + static const Color & get_black();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="234" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-63" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-63" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="260" width="400" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-64" value="- double r" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-64" value="- double r" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="268" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-65" value="- double g" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-65" value="- double g" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="294" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-66" value="- double b" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-66" value="- double b" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="320" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-67" value="- double a" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-67" value="- double a" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="346" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-68" value="- static Color white" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-68" value="- static Color white" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="372" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-69" value="- static Color red" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-69" value="- static Color red" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="398" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-70" value="- static Color green" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-70" value="- static Color green" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="424" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-71" value="- static Color blue" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-71" value="- static Color blue" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="450" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-72" value="- static Color cyan" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-72" value="- static Color cyan" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="476" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-73" value="- static Color magenta" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-73" value="- static Color magenta" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="502" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-74" value="- static Color yellow" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-74" value="- static Color yellow" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="528" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-75" value="- static Color black" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-53"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-75" value="- static Color black" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-53" vertex="1"> <mxGeometry y="554" width="400" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-76" value="Point" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-76" value="Point" style="swimlane;fontStyle=2;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;" parent="1" vertex="1"> <mxGeometry x="139.9999999999999" y="154" width="240" height="90.71" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-77" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-76"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-77" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-76" vertex="1"> <mxGeometry y="26" width="240" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-78" value="+ double x" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-76"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-78" value="+ double x" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-76" vertex="1"> <mxGeometry y="34" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-79" value="+ double y" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-76"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-79" value="+ double y" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-76" vertex="1"> <mxGeometry y="60" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-80" value="Component" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-80" value="Component" style="swimlane;fontStyle=2;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;" parent="1" vertex="1"> <mxGeometry x="-534.06" width="240" height="90" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-81" value="+active: Boolean" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-80"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-81" value="+active: Boolean" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-80" vertex="1"> <mxGeometry y="26" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-82" value="+ gameId" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-80"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-82" value="+ gameId" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-80" vertex="1"> <mxGeometry y="52" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-83" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-80"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-83" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-80" vertex="1"> <mxGeometry y="78" width="240" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-84" value="Transform" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-84" value="Transform" style="swimlane;fontStyle=2;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;" parent="1" vertex="1"> <mxGeometry x="-220" y="140.64" width="240" height="112" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-85" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-84"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-85" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-84" vertex="1"> <mxGeometry y="26" width="240" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-86" value="+ Point position; // Translation (shift)

" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-84"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-86" value="+ Point position; // Translation (shift)

" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-84" vertex="1"> <mxGeometry y="34" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-87" value="+ double rotation; // Rotation, in radians
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-84"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-87" value="+ double rotation; // Rotation, in radians
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-84" vertex="1"> <mxGeometry y="60" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-88" value="+ double scale; // Multiplication factoh
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-84"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-88" value="+ double scale; // Multiplication factoh
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-84" vertex="1"> <mxGeometry y="86" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-89" value="Resource" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-89" value="Asset" style="swimlane;fontStyle=2;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;" parent="1" vertex="1"> <mxGeometry x="-1600" y="234.32" width="240" height="164" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-90" value="+ Resource(const std::string & src);" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-89"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-90" value="+ Asset(const std::string & src);" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-89" vertex="1"> <mxGeometry y="26" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-91" value="+ const std::istream & read();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-89"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-91" value="+ const std::istream & read();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-89" vertex="1"> <mxGeometry y="52" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-92" value="+ const char * canonical()
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-89"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-92" value="+ const char * canonical()
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" parent="HgKoQxlyUx1tn9zsXLrm-89" vertex="1"> <mxGeometry y="78" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-93" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-89"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-93" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-89" vertex="1"> <mxGeometry y="104" width="240" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-94" value="- 	std::string src;" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-89"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-94" value="- 	std::string src;" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-89" vertex="1"> <mxGeometry y="112" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-95" value="- 	std::ifstream file;
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-89"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-95" value="- 	std::ifstream file;
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-89" vertex="1"> <mxGeometry y="138" width="240" height="26" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-96" value="TODO:Animator" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-96" value="TODO:Animator" style="swimlane;fontStyle=2;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;" parent="1" vertex="1"> <mxGeometry x="-940" y="234.32" width="240" height="49.36" as="geometry"> <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-97" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="HgKoQxlyUx1tn9zsXLrm-96"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-97" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" parent="HgKoQxlyUx1tn9zsXLrm-96" vertex="1"> <mxGeometry y="26" width="240" height="8" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-98" value="" style="endArrow=block;endSize=16;endFill=0;html=1;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-96" target="HgKoQxlyUx1tn9zsXLrm-80"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-98" value="" style="endArrow=block;endSize=16;endFill=0;html=1;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-96" target="HgKoQxlyUx1tn9zsXLrm-80" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="-740" y="440" as="sourcePoint" /> <mxPoint x="-570" y="439.99999999999994" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-99" value="" style="endArrow=block;endSize=16;endFill=0;html=1;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-84" target="HgKoQxlyUx1tn9zsXLrm-80"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-99" value="" style="endArrow=block;endSize=16;endFill=0;html=1;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-84" target="HgKoQxlyUx1tn9zsXLrm-80" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="-720" y="450" as="sourcePoint" /> <mxPoint x="-560" y="450" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-100" value="" style="endArrow=block;endSize=16;endFill=0;html=1;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-19" target="HgKoQxlyUx1tn9zsXLrm-80"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-100" value="" style="endArrow=block;endSize=16;endFill=0;html=1;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-19" target="HgKoQxlyUx1tn9zsXLrm-80" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="-710" y="460" as="sourcePoint" /> <mxPoint x="-550" y="460" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-101" value="" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-53" target="HgKoQxlyUx1tn9zsXLrm-19"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-101" value="" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-53" target="HgKoQxlyUx1tn9zsXLrm-19" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="-827" y="550" as="sourcePoint" /> <mxPoint x="-667" y="550" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-102" value="" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-76" target="HgKoQxlyUx1tn9zsXLrm-84"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-102" value="" style="endArrow=diamondThin;endFill=1;endSize=24;html=1;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-76" target="HgKoQxlyUx1tn9zsXLrm-84" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="110.62230769230791" y="360" as="sourcePoint" /> <mxPoint x="109.99769230769243" y="290" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-103" value="" style="endArrow=open;endFill=1;endSize=12;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-96" target="HgKoQxlyUx1tn9zsXLrm-20"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-103" value="" style="endArrow=open;endFill=1;endSize=12;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-96" target="HgKoQxlyUx1tn9zsXLrm-20" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="-770" y="340" as="sourcePoint" /> <mxPoint x="-540" y="290" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-104" value="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#ffffff;" vertex="1" connectable="0" parent="HgKoQxlyUx1tn9zsXLrm-103"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-104" value="1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#ffffff;" parent="HgKoQxlyUx1tn9zsXLrm-103" vertex="1" connectable="0"> <mxGeometry x="0.3336" y="-3" relative="1" as="geometry"> <mxPoint x="29.44" y="-12" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-105" value="0..1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#ffffff;" vertex="1" connectable="0" parent="HgKoQxlyUx1tn9zsXLrm-103"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-105" value="0..1" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#ffffff;" parent="HgKoQxlyUx1tn9zsXLrm-103" vertex="1" connectable="0"> <mxGeometry x="-0.8674" y="1" relative="1" as="geometry"> <mxPoint y="-8" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-106" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-3" target="HgKoQxlyUx1tn9zsXLrm-89"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-106" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-3" target="HgKoQxlyUx1tn9zsXLrm-89" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="-1600" y="1080" as="sourcePoint" /> <mxPoint x="-1440" y="1080" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-107" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-3" target="HgKoQxlyUx1tn9zsXLrm-10"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-107" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-3" target="HgKoQxlyUx1tn9zsXLrm-10" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="-1240" y="326.32000000000016" as="sourcePoint" /> <mxPoint x="-1350" y="326.32000000000016" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-108" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-3" target="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-108" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-3" target="HgKoQxlyUx1tn9zsXLrm-27" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="-1162.1648026738653" y="244.32000000000016" as="sourcePoint" /> <mxPoint x="-1371.0965419719755" y="-162" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-109" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-41" target="HgKoQxlyUx1tn9zsXLrm-47"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-109" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-41" target="HgKoQxlyUx1tn9zsXLrm-47" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="-660" y="-320" as="sourcePoint" /> <mxPoint x="-500" y="-320" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-110" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;" edge="1" parent="1" source="HgKoQxlyUx1tn9zsXLrm-41" target="HgKoQxlyUx1tn9zsXLrm-27"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-110" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;" parent="1" source="HgKoQxlyUx1tn9zsXLrm-41" target="HgKoQxlyUx1tn9zsXLrm-27" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="-1092.867033190796" y="244.32000000000016" as="sourcePoint" /> <mxPoint x="-980.2586031358178" y="-96" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-111" value="<b><font style="font-size: 50px">API</font></b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-111" value="<b><font style="font-size: 50px">API</font></b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;" parent="1" vertex="1"> <mxGeometry x="684" y="11" width="93" height="31" as="geometry" /> </mxCell> - <mxCell id="HgKoQxlyUx1tn9zsXLrm-112" value="<b><font style="font-size: 50px">Engine</font></b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;" vertex="1" parent="1"> + <mxCell id="HgKoQxlyUx1tn9zsXLrm-112" value="<b><font style="font-size: 50px">Engine</font></b>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;" parent="1" vertex="1"> <mxGeometry x="612" y="-132" width="177" height="31" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> + <diagram id="PSe3G-EA4oLpEOqnfdku" name="Texture"> + <mxGraphModel dx="453" dy="1898" 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="uLiKtnuvw4STLNpZsRI7-1" value="Texture" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxGeometry x="1190" y="-771.5" width="240" height="164" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-2" value="+ Texture(path, reload)" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-1"> + <mxGeometry y="26" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-3" value="+ Texture(unique_ptr<Asset>, reload)" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-1"> + <mxGeometry y="52" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-4" value="~Texture" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-1"> + <mxGeometry y="78" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-5" value="- 	void load(std::unique_ptr<Asset> res);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-1"> + <mxGeometry y="104" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-6" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-1"> + <mxGeometry y="130" width="240" height="8" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-7" value="- SDL_texture shared_ptr" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-1"> + <mxGeometry y="138" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-8" value="<<singleton>>
SdlContext" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=37;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxGeometry x="1530" y="-870" width="450" height="361" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-9" value="- SdlContext();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="37" width="450" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-10" value="virtual ~SdlContext();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="63" width="450" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-11" value="- static SdlContext & get_instance();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="89" width="450" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-12" value="- void draw(const api::Sprite&, const api::Transform&);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="115" width="450" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-13" value="- void presentScreen();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="141" width="450" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-14" value="- void clearScreen();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="167" width="450" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-15" value="- void draw(const api::Sprite&, const api::Transform&);
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="193" width="450" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-16" value="- SDL_Texture* setTextureFromPath(const char*);" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="219" width="450" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-17" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="245" width="450" height="8" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-18" value="- friend class Texture" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="253" width="450" height="27" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-19" value="- friend class RenderSystem" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="280" width="450" height="27" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-20" value="- SDL_Window* window" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="307" width="450" height="27" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-21" value="- SDL_Renderer* renderer" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry y="334" width="450" height="27" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-22" value="Asset" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxGeometry x="870" y="-771.5" width="240" height="164" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-23" value="+ Asset(const std::string & src);" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-22"> + <mxGeometry y="26" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-24" value="+ const std::istream & read();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-22"> + <mxGeometry y="52" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-25" value="+ const char * canonical()
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-22"> + <mxGeometry y="78" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-26" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-22"> + <mxGeometry y="104" width="240" height="8" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-27" value="- 	std::string src;" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-22"> + <mxGeometry y="112" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-28" value="- 	std::ifstream file;
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="uLiKtnuvw4STLNpZsRI7-22"> + <mxGeometry y="138" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-29" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;" edge="1" parent="1" source="uLiKtnuvw4STLNpZsRI7-1" target="uLiKtnuvw4STLNpZsRI7-22"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="1090" y="650" as="sourcePoint" /> + <mxPoint x="1250" y="650" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="KHBOkPQzprUpjYBXyaD9-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1"> + <mxGeometry x="860" y="-794.5" width="590" height="210" as="geometry" /> + </mxCell> + <mxCell id="uLiKtnuvw4STLNpZsRI7-30" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;" edge="1" parent="1" source="uLiKtnuvw4STLNpZsRI7-1" target="uLiKtnuvw4STLNpZsRI7-8"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="1527.8351973261347" y="-185.67999999999984" as="sourcePoint" /> + <mxPoint x="1318.9034580280245" y="-592" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="KHBOkPQzprUpjYBXyaD9-2" value="api" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1"> + <mxGeometry x="1130" y="-824.5" width="40" height="30" as="geometry" /> + </mxCell> + <mxCell id="KHBOkPQzprUpjYBXyaD9-3" value="" style="endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" target="uLiKtnuvw4STLNpZsRI7-2"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="1530" y="-720" as="sourcePoint" /> + <mxPoint x="1430" y="-870" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="KHBOkPQzprUpjYBXyaD9-5" value="friend" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="KHBOkPQzprUpjYBXyaD9-3"> + <mxGeometry x="0.269" y="-4" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> + <diagram id="23OjqhjSbyBXrvKH5rPI" name="AssesManager"> + <mxGraphModel dx="2713" dy="1721" 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="e3fB-zZ3n_cLuHSx0Qf0-1" value="<<singleton>>
AssetManager" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=38;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxGeometry x="-1500" y="-690" width="380" height="210" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="e3fB-zZ3n_cLuHSx0Qf0-2" value="- static AssetManager & get_instance();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="e3fB-zZ3n_cLuHSx0Qf0-1"> + <mxGeometry y="38" width="380" height="26" as="geometry" /> + </mxCell> + <mxCell id="e3fB-zZ3n_cLuHSx0Qf0-3" value="- AssetManager();
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="e3fB-zZ3n_cLuHSx0Qf0-1"> + <mxGeometry y="64" width="380" height="26" as="geometry" /> + </mxCell> + <mxCell id="e3fB-zZ3n_cLuHSx0Qf0-4" value="- virtual ~AssetManager()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="e3fB-zZ3n_cLuHSx0Qf0-1"> + <mxGeometry y="90" width="380" height="26" as="geometry" /> + </mxCell> + <mxCell id="e3fB-zZ3n_cLuHSx0Qf0-5" value="template <typename asset>
std::shared_ptr<asset> cache(path, bool reload)" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="e3fB-zZ3n_cLuHSx0Qf0-1"> + <mxGeometry y="116" width="380" height="35" as="geometry" /> + </mxCell> + <mxCell id="e3fB-zZ3n_cLuHSx0Qf0-6" value="- virtual ~AssetManager()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="e3fB-zZ3n_cLuHSx0Qf0-1"> + <mxGeometry y="151" width="380" height="26" as="geometry" /> + </mxCell> + <mxCell id="e3fB-zZ3n_cLuHSx0Qf0-7" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="e3fB-zZ3n_cLuHSx0Qf0-1"> + <mxGeometry y="177" width="380" height="8" as="geometry" /> + </mxCell> + <mxCell id="e3fB-zZ3n_cLuHSx0Qf0-8" value="- std::unordered_map<std::string, std::any> asset_cache" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="e3fB-zZ3n_cLuHSx0Qf0-1"> + <mxGeometry y="185" width="380" height="25" as="geometry" /> + </mxCell> + <mxCell id="8_LcbX6gMbjuHArqpFud-1" value="Texture" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxGeometry x="-1590" y="-920" width="240" height="40" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="8_LcbX6gMbjuHArqpFud-6" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="8_LcbX6gMbjuHArqpFud-1"> + <mxGeometry y="26" width="240" height="8" as="geometry" /> + </mxCell> + <mxCell id="oKbLYUMuTHWLhRLqUG_X-8" value="Sound" style="swimlane;fontStyle=2;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;" vertex="1" parent="1"> + <mxGeometry x="-1275" y="-920" width="240" height="40" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="oKbLYUMuTHWLhRLqUG_X-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;" vertex="1" parent="oKbLYUMuTHWLhRLqUG_X-8"> + <mxGeometry y="26" width="240" height="8" as="geometry" /> + </mxCell> + <mxCell id="oKbLYUMuTHWLhRLqUG_X-10" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="e3fB-zZ3n_cLuHSx0Qf0-1" target="8_LcbX6gMbjuHArqpFud-1"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="-1400" y="-760" as="sourcePoint" /> + <mxPoint x="-1240" y="-760" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="oKbLYUMuTHWLhRLqUG_X-11" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="e3fB-zZ3n_cLuHSx0Qf0-1" target="oKbLYUMuTHWLhRLqUG_X-8"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="-1300" y="-680" as="sourcePoint" /> + <mxPoint x="-1460" y="-870" as="targetPoint" /> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> + <diagram id="pnFl8-Rhr9uVGBpfHJs8" name="Rendering"> + <mxGraphModel dx="3003" dy="1898" 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="7YKOBpZpmR3edmjy2obs-1" value="<<singleton>>
SdlContext" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=37;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxGeometry x="-1260" y="-760" width="130" height="68.5" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-10" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-1"> + <mxGeometry y="37" width="130" height="8" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-15" value="RenderSystem" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=25;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxGeometry x="-1120" y="-564.5" width="240" height="213" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-16" value="- RenderSystem()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-15"> + <mxGeometry y="25" width="240" height="22" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-17" value="- ~ RenderSystem()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-15"> + <mxGeometry y="47" width="240" height="22" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-18" value="- void sort_layers()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-15"> + <mxGeometry y="69" width="240" height="22" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-29" value="- void clear_screen()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-15"> + <mxGeometry y="91" width="240" height="22" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-32" value="- void update_sprites()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-15"> + <mxGeometry y="113" width="240" height="22" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-31" value="- void update_camera()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-15"> + <mxGeometry y="135" width="240" height="22" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-30" value="- void present_screen()" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-15"> + <mxGeometry y="157" width="240" height="22" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-19" value="+ void update() override" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-15"> + <mxGeometry y="179" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-20" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-15"> + <mxGeometry y="205" width="240" height="8" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-21" value="<<interface>>
<<singleton>>
System" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=50;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxGeometry x="-1120" y="-760" width="240" height="162" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-22" value="+ static System & get_instance();" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-21"> + <mxGeometry y="50" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-23" value="+ virtual void update() = 0;
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-21"> + <mxGeometry y="76" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-24" value="# System() {};
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-21"> + <mxGeometry y="102" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-25" value="# virtual ~System() {};
" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;rounded=0;shadow=0;html=0;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-21"> + <mxGeometry y="128" width="240" height="26" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-26" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="7YKOBpZpmR3edmjy2obs-21"> + <mxGeometry y="154" width="240" height="8" as="geometry" /> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-27" value="" style="endArrow=block;endSize=16;endFill=0;html=1;" edge="1" parent="1" source="7YKOBpZpmR3edmjy2obs-15" target="7YKOBpZpmR3edmjy2obs-21"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="-1260" y="-560" as="sourcePoint" /> + <mxPoint x="-1100" y="-560" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-28" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="7YKOBpZpmR3edmjy2obs-15" target="7YKOBpZpmR3edmjy2obs-1"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="-1632.867033190796" y="-5.679999999999836" as="sourcePoint" /> + <mxPoint x="-1520.2586031358178" y="-346" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-1230" y="-500" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="7YKOBpZpmR3edmjy2obs-34" value="friend" style="html=1;verticalAlign=bottom;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;exitX=0.75;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="7YKOBpZpmR3edmjy2obs-1" target="7YKOBpZpmR3edmjy2obs-15"> + <mxGeometry width="80" relative="1" as="geometry"> + <mxPoint x="-1230" y="-562.5" as="sourcePoint" /> + <mxPoint x="-1050" y="-590" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-1203" y="-550" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="kZiYh-lleEugcNPE6Gh2-3" value="Component" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=20;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxGeometry x="-730" y="-760" width="110" height="40" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="kZiYh-lleEugcNPE6Gh2-8" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="kZiYh-lleEugcNPE6Gh2-3"> + <mxGeometry y="20" width="110" height="8" as="geometry" /> + </mxCell> + <mxCell id="kZiYh-lleEugcNPE6Gh2-13" value="ComponentManager" style="swimlane;fontStyle=2;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=20;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;rounded=0;shadow=0;strokeWidth=1;" vertex="1" parent="1"> + <mxGeometry x="-1290" y="-391.5" width="150" height="40" as="geometry"> + <mxRectangle x="230" y="140" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="kZiYh-lleEugcNPE6Gh2-14" value="" style="line;html=1;strokeWidth=1;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;" vertex="1" parent="kZiYh-lleEugcNPE6Gh2-13"> + <mxGeometry y="20" width="150" height="8" as="geometry" /> + </mxCell> + <mxCell id="kZiYh-lleEugcNPE6Gh2-19" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;edgeStyle=orthogonalEdgeStyle;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="7YKOBpZpmR3edmjy2obs-29" target="kZiYh-lleEugcNPE6Gh2-13"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="-630" y="-354" as="sourcePoint" /> + <mxPoint x="-740" y="-478" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-1" 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;" vertex="1" parent="1"> + <mxGeometry x="-660" y="-650" width="160" height="102" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-2" value="+position : Point" 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="4oIQ1mYW8iifAQnirouZ-1"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-3" value="+rotation : double" 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="4oIQ1mYW8iifAQnirouZ-1"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-4" value="+scale : double" 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="4oIQ1mYW8iifAQnirouZ-1"> + <mxGeometry y="60" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-5" 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="4oIQ1mYW8iifAQnirouZ-1"> + <mxGeometry y="77" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-6" value="+get_instances_max() : 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;fontColor=#0000FF;" vertex="1" parent="4oIQ1mYW8iifAQnirouZ-1"> + <mxGeometry y="85" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-7" 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;" vertex="1" parent="1"> + <mxGeometry x="-840" y="-650" width="160" height="136" as="geometry"> + <mxRectangle x="330" y="540" width="160" height="26" as="alternateBounds" /> + </mxGeometry> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-8" value="+ shared_ptr<Texture> sprite_image" 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=#000000;" vertex="1" parent="4oIQ1mYW8iifAQnirouZ-7"> + <mxGeometry y="26" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-9" value="+ color : 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;" vertex="1" parent="4oIQ1mYW8iifAQnirouZ-7"> + <mxGeometry y="43" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-10" value="flip : FlipSettings" 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="4oIQ1mYW8iifAQnirouZ-7"> + <mxGeometry y="60" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-11" value="+sortingLayer : uint8_t" 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="4oIQ1mYW8iifAQnirouZ-7"> + <mxGeometry y="77" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-12" value="+orderInLayer : uint8_t" 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="4oIQ1mYW8iifAQnirouZ-7"> + <mxGeometry y="94" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-13" 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="4oIQ1mYW8iifAQnirouZ-7"> + <mxGeometry y="111" width="160" height="8" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-14" value="+get_instances_max() : 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;fontColor=#0000FF;" vertex="1" parent="4oIQ1mYW8iifAQnirouZ-7"> + <mxGeometry y="119" width="160" height="17" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-15" value="" style="endArrow=block;endSize=16;endFill=0;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="4oIQ1mYW8iifAQnirouZ-7" target="kZiYh-lleEugcNPE6Gh2-3"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="-890" y="-626" as="sourcePoint" /> + <mxPoint x="-890" y="-660" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-21" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1"> + <mxGeometry x="-865" y="-780" width="380" height="270" as="geometry" /> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-16" value="" style="endArrow=block;endSize=16;endFill=0;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="4oIQ1mYW8iifAQnirouZ-1" target="kZiYh-lleEugcNPE6Gh2-3"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="-750" y="-640" as="sourcePoint" /> + <mxPoint x="-713" y="-730" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="4oIQ1mYW8iifAQnirouZ-22" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;edgeStyle=orthogonalEdgeStyle;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="7YKOBpZpmR3edmjy2obs-15" target="4oIQ1mYW8iifAQnirouZ-21"> + <mxGeometry width="160" relative="1" as="geometry"> + <mxPoint x="-535" y="-462.5" as="sourcePoint" /> + <mxPoint x="-630" y="-391.5" as="targetPoint" /> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> + <diagram id="rq29EVyvDg6rC-_1Ovs3" name="Rendering flowchar"> + <mxGraphModel dx="1303" dy="798" 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="xgsAh7ClOioR0Sjh_gqH-3" value="" style="ellipse;html=1;shape=startState;fillColor=#000000;strokeColor=#ff0000;" vertex="1" parent="1"> + <mxGeometry x="95" y="30" width="30" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-4" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;rounded=0;" edge="1" source="xgsAh7ClOioR0Sjh_gqH-3" parent="1" target="xgsAh7ClOioR0Sjh_gqH-5"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="110" y="110" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-5" target="xgsAh7ClOioR0Sjh_gqH-7"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-5" value="clear screen" style="html=1;whiteSpace=wrap;" vertex="1" parent="1"> + <mxGeometry x="58" y="90" width="105" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-11" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-7" target="xgsAh7ClOioR0Sjh_gqH-10"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-7" value="update camera positions and size" style="html=1;whiteSpace=wrap;" vertex="1" parent="1"> + <mxGeometry x="10.5" y="150" width="200" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-14" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-9" target="xgsAh7ClOioR0Sjh_gqH-13"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-9" value="present screen" style="html=1;whiteSpace=wrap;" vertex="1" parent="1"> + <mxGeometry x="58" y="270" width="105" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-12" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-10" target="xgsAh7ClOioR0Sjh_gqH-9"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-10" value="render sprites based on camera<div>render particles based on camera</div>" style="html=1;whiteSpace=wrap;" vertex="1" parent="1"> + <mxGeometry x="10" y="210" width="200" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-13" value="" style="ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#ff0000;" vertex="1" parent="1"> + <mxGeometry x="95" y="330" width="30" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-15" value="" style="ellipse;html=1;shape=startState;fillColor=#000000;strokeColor=#ff0000;" vertex="1" parent="1"> + <mxGeometry x="495" y="30" width="30" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-16" value="" style="edgeStyle=orthogonalEdgeStyle;html=1;verticalAlign=bottom;endArrow=open;endSize=8;strokeColor=#ff0000;rounded=0;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-15" target="xgsAh7ClOioR0Sjh_gqH-18"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="510" y="110" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-17" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-18" target="xgsAh7ClOioR0Sjh_gqH-20"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-18" value="get list of sprites components from component manager&nbsp;" style="html=1;whiteSpace=wrap;" vertex="1" parent="1"> + <mxGeometry x="357.5" y="90" width="306" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-29" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-20" target="xgsAh7ClOioR0Sjh_gqH-28"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-20" value="get static instance SDLContext" style="html=1;whiteSpace=wrap;" vertex="1" parent="1"> + <mxGeometry x="410.5" y="150" width="200" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-25" value="" style="ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#ff0000;" vertex="1" parent="1"> + <mxGeometry x="327.5" y="220" width="30" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-31" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-28" target="xgsAh7ClOioR0Sjh_gqH-30"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-32" value="YES" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="xgsAh7ClOioR0Sjh_gqH-31"> + <mxGeometry x="-0.1333" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-28" target="xgsAh7ClOioR0Sjh_gqH-25"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-48" value="NO" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="xgsAh7ClOioR0Sjh_gqH-47"> + <mxGeometry x="-0.2994" y="3" relative="1" as="geometry"> + <mxPoint x="-1" y="-3" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-28" value="is there a sprite" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="1"> + <mxGeometry x="455.75" y="200" width="109.5" height="70" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-38" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-30" target="xgsAh7ClOioR0Sjh_gqH-37"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-30" value="get list of transform componets from component manager by id of current sprite object" style="html=1;whiteSpace=wrap;" vertex="1" parent="1"> + <mxGeometry x="340.5" y="320" width="340" height="50" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-40" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-37" target="xgsAh7ClOioR0Sjh_gqH-39"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-41" value="Yes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="xgsAh7ClOioR0Sjh_gqH-40"> + <mxGeometry x="-0.4167" y="-1" relative="1" as="geometry"> + <mxPoint x="1" y="9" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-37" value="is there a transform" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="1"> + <mxGeometry x="448.13" y="410" width="124.75" height="70" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-39" target="xgsAh7ClOioR0Sjh_gqH-28"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="700" y="535" /> + <mxPoint x="700" y="235" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-39" value="draw sprite with transform" style="html=1;whiteSpace=wrap;" vertex="1" parent="1"> + <mxGeometry x="425.76" y="520" width="169.5" height="30" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-50" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1"> + <mxGeometry x="320" width="411.87" height="580" as="geometry" /> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-37" target="xgsAh7ClOioR0Sjh_gqH-28"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="700" y="445" /> + <mxPoint x="700" y="235" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-46" value="NO" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="xgsAh7ClOioR0Sjh_gqH-45"> + <mxGeometry x="-0.6632" y="-2" relative="1" as="geometry"> + <mxPoint x="-12" y="-2" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="xgsAh7ClOioR0Sjh_gqH-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.004;entryY=0.388;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="xgsAh7ClOioR0Sjh_gqH-10" target="xgsAh7ClOioR0Sjh_gqH-50"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> </mxfile> diff --git a/img/AssesManager.png b/img/AssesManager.png Binary files differnew file mode 100644 index 0000000..9dfb435 --- /dev/null +++ b/img/AssesManager.png diff --git a/img/Rendering.png b/img/Rendering.png Binary files differnew file mode 100644 index 0000000..d3491ba --- /dev/null +++ b/img/Rendering.png diff --git a/img/flowchart_rendering.png b/img/flowchart_rendering.png Binary files differnew file mode 100644 index 0000000..41306a1 --- /dev/null +++ b/img/flowchart_rendering.png diff --git a/img/poc-camera.pdf b/img/poc-camera.pdf Binary files differnew file mode 100644 index 0000000..c67c078 --- /dev/null +++ b/img/poc-camera.pdf diff --git a/img/texture.png b/img/texture.png Binary files differnew file mode 100644 index 0000000..97b79fe --- /dev/null +++ b/img/texture.png |