\hypertarget{classEngine}{}\doxysection{Engine Class Reference}
\label{classEngine}\index{Engine@{Engine}}


{\ttfamily \#include $<$Engine.\+hpp$>$}



Collaboration diagram for Engine\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{dc/dfd/classEngine__coll__graph}
\end{center}
\end{figure}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classEngine_a8c98683b0a3aa28d8ab72a8bcd0d52f2}{Engine}} ()
\item 
\mbox{\hyperlink{classEngine_a8ef7030a089ecb30bbfcb9e43094717a}{$\sim$\+Engine}} ()
\item 
void \mbox{\hyperlink{classEngine_a8420fafe78a3742a451fac2fcedef50c}{Input}} (bool $\ast$quit, bool $\ast$editing)
\item 
void \mbox{\hyperlink{classEngine_ac84eefe06226f430a2448306e6fd2579}{Update}} ()
\item 
void \mbox{\hyperlink{classEngine_acde70aed0043e2e2091d0bb6cce8e3c1}{Render}} ()
\item 
void \mbox{\hyperlink{classEngine_a9ec9d3d7dc0f9e79032dd83801778eaf}{Main\+Game\+Loop}} ()
\item 
void \mbox{\hyperlink{classEngine_a1fbe9f5cb4abc3572e432cae1f154817}{Start}} ()
\item 
void \mbox{\hyperlink{classEngine_a3dbd2c0a65e642baa7eaa97caa6e4e64}{Shutdown}} ()
\item 
void \mbox{\hyperlink{classEngine_a7f07811f5bfae8943d5530057b1dc822}{Initialize\+Graphics\+Sub\+System}} ()
\item 
void \mbox{\hyperlink{classEngine_a2e3d93df96db6361330d3a41f7b5892b}{Initialize\+Physics\+Subsystem}} ()
\item 
void \mbox{\hyperlink{classEngine_ab03f0933af2767764d2e05f56fa44fd7}{Initialize\+GUI}} ()
\item 
\mbox{\hyperlink{classGameObject}{Game\+Object}} $\ast$ \mbox{\hyperlink{classEngine_a0a1b174ad072878adc6dff75d40b8dd9}{create\+Fly}} (\mbox{\hyperlink{structVec2D}{Vec2D}} spawn\+Pos)
\end{DoxyCompactItemize}
\doxysubsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classSDLGraphicsEngineRenderer}{SDLGraphics\+Engine\+Renderer}} $\ast$ \mbox{\hyperlink{classEngine_a871acf97123e6fb628a4e16a60be1f7d}{m\+Renderer}} = nullptr
\item 
\mbox{\hyperlink{classPhysicsEngine}{Physics\+Engine}} $\ast$ \mbox{\hyperlink{classEngine_a4ec8c2b90b6421647f6da9c30ecc2bca}{m\+Physics}} = nullptr
\item 
\mbox{\hyperlink{classGameMakerGUI}{Game\+Maker\+GUI}} $\ast$ \mbox{\hyperlink{classEngine_a9e8b2e9834b4ea54e780e00333ef749e}{m\+GUI}} = nullptr
\item 
std\+::vector$<$ \mbox{\hyperlink{classGameObject}{Game\+Object}} $\ast$ $>$ \mbox{\hyperlink{classEngine_ab9e9061aa9c4bc7d2d94e5693bebde21}{m\+\_\+gameobjects}}
\item 
bool \mbox{\hyperlink{classEngine_a03d6c0fcad1696c5b232c862cb1dafb1}{run\+Game}} = true
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
The main game engine class. Holds all objects relevant to the game and runs them based on a clock. 

\doxysubsection{Constructor \& Destructor Documentation}
\Hypertarget{classEngine_a8c98683b0a3aa28d8ab72a8bcd0d52f2}\label{classEngine_a8c98683b0a3aa28d8ab72a8bcd0d52f2} 
\index{Engine@{Engine}!Engine@{Engine}}
\index{Engine@{Engine}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{Engine()}{Engine()}}
{\footnotesize\ttfamily Engine\+::\+Engine (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Constructor of \doxylink{classEngine}{Engine} \Hypertarget{classEngine_a8ef7030a089ecb30bbfcb9e43094717a}\label{classEngine_a8ef7030a089ecb30bbfcb9e43094717a} 
\index{Engine@{Engine}!````~Engine@{$\sim$Engine}}
\index{````~Engine@{$\sim$Engine}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{$\sim$Engine()}{\string~Engine()}}
{\footnotesize\ttfamily Engine\+::$\sim$\+Engine (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Destructor 

\doxysubsection{Member Function Documentation}
\Hypertarget{classEngine_a0a1b174ad072878adc6dff75d40b8dd9}\label{classEngine_a0a1b174ad072878adc6dff75d40b8dd9} 
\index{Engine@{Engine}!createFly@{createFly}}
\index{createFly@{createFly}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{createFly()}{createFly()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classGameObject}{Game\+Object}} $\ast$ Engine\+::create\+Fly (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structVec2D}{Vec2D}}}]{spawn\+Pos }\end{DoxyParamCaption})}

Create a new bespoke Fly \doxylink{classGameObject}{Game\+Object} at the given location. Used to create the demo scene.


\begin{DoxyParams}{Parameters}
{\em spawn\+Pos} & the position to place the new \doxylink{classGameObject}{Game\+Object} \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a Fly \doxylink{classGameObject}{Game\+Object} 
\end{DoxyReturn}
Here is the call graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d1/db6/classEngine_a0a1b174ad072878adc6dff75d40b8dd9_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=296pt]{d1/db6/classEngine_a0a1b174ad072878adc6dff75d40b8dd9_icgraph}
\end{center}
\end{figure}
\Hypertarget{classEngine_a7f07811f5bfae8943d5530057b1dc822}\label{classEngine_a7f07811f5bfae8943d5530057b1dc822} 
\index{Engine@{Engine}!InitializeGraphicsSubSystem@{InitializeGraphicsSubSystem}}
\index{InitializeGraphicsSubSystem@{InitializeGraphicsSubSystem}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{InitializeGraphicsSubSystem()}{InitializeGraphicsSubSystem()}}
{\footnotesize\ttfamily void Engine\+::\+Initialize\+Graphics\+Sub\+System (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Request to startup the Graphics Subsystem. \begin{DoxySeeAlso}{See also}
\doxylink{classIGraphicsEngineRenderer}{IGraphics\+Engine\+Renderer} 
\end{DoxySeeAlso}
\Hypertarget{classEngine_ab03f0933af2767764d2e05f56fa44fd7}\label{classEngine_ab03f0933af2767764d2e05f56fa44fd7} 
\index{Engine@{Engine}!InitializeGUI@{InitializeGUI}}
\index{InitializeGUI@{InitializeGUI}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{InitializeGUI()}{InitializeGUI()}}
{\footnotesize\ttfamily void Engine\+::\+Initialize\+GUI (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Request to startup the GUI Subsystem. \begin{DoxySeeAlso}{See also}
\doxylink{classGameMakerGUI}{Game\+Maker\+GUI} 
\end{DoxySeeAlso}
Here is the call graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d1/db6/classEngine_ab03f0933af2767764d2e05f56fa44fd7_cgraph}
\end{center}
\end{figure}
\Hypertarget{classEngine_a2e3d93df96db6361330d3a41f7b5892b}\label{classEngine_a2e3d93df96db6361330d3a41f7b5892b} 
\index{Engine@{Engine}!InitializePhysicsSubsystem@{InitializePhysicsSubsystem}}
\index{InitializePhysicsSubsystem@{InitializePhysicsSubsystem}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{InitializePhysicsSubsystem()}{InitializePhysicsSubsystem()}}
{\footnotesize\ttfamily void Engine\+::\+Initialize\+Physics\+Subsystem (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Request to startup the Physics Subsystem. \begin{DoxySeeAlso}{See also}
\doxylink{classPhysicsEngine}{Physics\+Engine} 
\end{DoxySeeAlso}
Here is the call graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d1/db6/classEngine_a2e3d93df96db6361330d3a41f7b5892b_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d1/db6/classEngine_a2e3d93df96db6361330d3a41f7b5892b_icgraph}
\end{center}
\end{figure}
\Hypertarget{classEngine_a8420fafe78a3742a451fac2fcedef50c}\label{classEngine_a8420fafe78a3742a451fac2fcedef50c} 
\index{Engine@{Engine}!Input@{Input}}
\index{Input@{Input}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{Input()}{Input()}}
{\footnotesize\ttfamily void Engine\+::\+Input (\begin{DoxyParamCaption}\item[{bool $\ast$}]{quit,  }\item[{bool $\ast$}]{editing }\end{DoxyParamCaption})}

Gets user input 
\begin{DoxyParams}{Parameters}
{\em } & \\
\hline
\end{DoxyParams}
Here is the call graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=321pt]{d1/db6/classEngine_a8420fafe78a3742a451fac2fcedef50c_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=328pt]{d1/db6/classEngine_a8420fafe78a3742a451fac2fcedef50c_icgraph}
\end{center}
\end{figure}
\Hypertarget{classEngine_a9ec9d3d7dc0f9e79032dd83801778eaf}\label{classEngine_a9ec9d3d7dc0f9e79032dd83801778eaf} 
\index{Engine@{Engine}!MainGameLoop@{MainGameLoop}}
\index{MainGameLoop@{MainGameLoop}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{MainGameLoop()}{MainGameLoop()}}
{\footnotesize\ttfamily void Engine\+::\+Main\+Game\+Loop (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Main Game Loop that runs forever Here is the call graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d1/db6/classEngine_a9ec9d3d7dc0f9e79032dd83801778eaf_cgraph}
\end{center}
\end{figure}
\Hypertarget{classEngine_acde70aed0043e2e2091d0bb6cce8e3c1}\label{classEngine_acde70aed0043e2e2091d0bb6cce8e3c1} 
\index{Engine@{Engine}!Render@{Render}}
\index{Render@{Render}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{Render()}{Render()}}
{\footnotesize\ttfamily void Engine\+::\+Render (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Per frame render. Renders everything Here is the call graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d1/db6/classEngine_acde70aed0043e2e2091d0bb6cce8e3c1_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=338pt]{d1/db6/classEngine_acde70aed0043e2e2091d0bb6cce8e3c1_icgraph}
\end{center}
\end{figure}
\Hypertarget{classEngine_a3dbd2c0a65e642baa7eaa97caa6e4e64}\label{classEngine_a3dbd2c0a65e642baa7eaa97caa6e4e64} 
\index{Engine@{Engine}!Shutdown@{Shutdown}}
\index{Shutdown@{Shutdown}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{Shutdown()}{Shutdown()}}
{\footnotesize\ttfamily void Engine\+::\+Shutdown (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Initialization and shutdown pattern. Explicitly call \textquotesingle{}Shutdown\textquotesingle{} to terminate the engine \Hypertarget{classEngine_a1fbe9f5cb4abc3572e432cae1f154817}\label{classEngine_a1fbe9f5cb4abc3572e432cae1f154817} 
\index{Engine@{Engine}!Start@{Start}}
\index{Start@{Start}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{Start()}{Start()}}
{\footnotesize\ttfamily void Engine\+::\+Start (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Initialization and shutdown pattern. Explicitly call \textquotesingle{}Start\textquotesingle{} to launch the engine Here is the call graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d1/db6/classEngine_a1fbe9f5cb4abc3572e432cae1f154817_cgraph}
\end{center}
\end{figure}
\Hypertarget{classEngine_ac84eefe06226f430a2448306e6fd2579}\label{classEngine_ac84eefe06226f430a2448306e6fd2579} 
\index{Engine@{Engine}!Update@{Update}}
\index{Update@{Update}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{Update()}{Update()}}
{\footnotesize\ttfamily void Engine\+::\+Update (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Per frame update Here is the call graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{d1/db6/classEngine_ac84eefe06226f430a2448306e6fd2579_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=339pt]{d1/db6/classEngine_ac84eefe06226f430a2448306e6fd2579_icgraph}
\end{center}
\end{figure}


\doxysubsection{Member Data Documentation}
\Hypertarget{classEngine_ab9e9061aa9c4bc7d2d94e5693bebde21}\label{classEngine_ab9e9061aa9c4bc7d2d94e5693bebde21} 
\index{Engine@{Engine}!m\_gameobjects@{m\_gameobjects}}
\index{m\_gameobjects@{m\_gameobjects}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{m\_gameobjects}{m\_gameobjects}}
{\footnotesize\ttfamily std\+::vector$<$\mbox{\hyperlink{classGameObject}{Game\+Object}} $\ast$$>$ Engine\+::m\+\_\+gameobjects\hspace{0.3cm}{\ttfamily [private]}}

Holds all game objects \Hypertarget{classEngine_a9e8b2e9834b4ea54e780e00333ef749e}\label{classEngine_a9e8b2e9834b4ea54e780e00333ef749e} 
\index{Engine@{Engine}!mGUI@{mGUI}}
\index{mGUI@{mGUI}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{mGUI}{mGUI}}
{\footnotesize\ttfamily \mbox{\hyperlink{classGameMakerGUI}{Game\+Maker\+GUI}}$\ast$ Engine\+::m\+GUI = nullptr\hspace{0.3cm}{\ttfamily [private]}}

Displays editor \Hypertarget{classEngine_a4ec8c2b90b6421647f6da9c30ecc2bca}\label{classEngine_a4ec8c2b90b6421647f6da9c30ecc2bca} 
\index{Engine@{Engine}!mPhysics@{mPhysics}}
\index{mPhysics@{mPhysics}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{mPhysics}{mPhysics}}
{\footnotesize\ttfamily \mbox{\hyperlink{classPhysicsEngine}{Physics\+Engine}}$\ast$ Engine\+::m\+Physics = nullptr\hspace{0.3cm}{\ttfamily [private]}}

Calculates all collisions \Hypertarget{classEngine_a871acf97123e6fb628a4e16a60be1f7d}\label{classEngine_a871acf97123e6fb628a4e16a60be1f7d} 
\index{Engine@{Engine}!mRenderer@{mRenderer}}
\index{mRenderer@{mRenderer}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{mRenderer}{mRenderer}}
{\footnotesize\ttfamily \mbox{\hyperlink{classSDLGraphicsEngineRenderer}{SDLGraphics\+Engine\+Renderer}}$\ast$ Engine\+::m\+Renderer = nullptr\hspace{0.3cm}{\ttfamily [private]}}

Object that renders all objects \Hypertarget{classEngine_a03d6c0fcad1696c5b232c862cb1dafb1}\label{classEngine_a03d6c0fcad1696c5b232c862cb1dafb1} 
\index{Engine@{Engine}!runGame@{runGame}}
\index{runGame@{runGame}!Engine@{Engine}}
\doxysubsubsection{\texorpdfstring{runGame}{runGame}}
{\footnotesize\ttfamily bool Engine\+::run\+Game = true\hspace{0.3cm}{\ttfamily [private]}}

Used to pause/play the game 

The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
include/Engine.\+hpp\item 
src/Engine.\+cpp\end{DoxyCompactItemize}
