diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 0000000..797acea
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/auxil/thesis.ist b/auxil/thesis.ist
index bd85032..e494013 100644
--- a/auxil/thesis.ist
+++ b/auxil/thesis.ist
@@ -1,5 +1,5 @@
% makeindex style file created by the glossaries package
-% for document 'thesis' on 2022-2-12
+% for document 'thesis' on 2022-2-23
actual '?'
encap '|'
level '!'
diff --git a/pics/trafficsystem_carsignal_crossroads.png b/pics/trafficsystem_carsignal_crossroads.png
new file mode 100644
index 0000000..58af557
Binary files /dev/null and b/pics/trafficsystem_carsignal_crossroads.png differ
diff --git a/pics/trafficsystem_carsignal_signal_reference.png b/pics/trafficsystem_carsignal_signal_reference.png
new file mode 100644
index 0000000..d69b96f
Binary files /dev/null and b/pics/trafficsystem_carsignal_signal_reference.png differ
diff --git a/pics/trafficsystem_respawn_point.png b/pics/trafficsystem_respawn_point.png
new file mode 100644
index 0000000..aef1bea
Binary files /dev/null and b/pics/trafficsystem_respawn_point.png differ
diff --git a/sections/implementation.tex b/sections/implementation.tex
index 39b736c..31bab24 100644
--- a/sections/implementation.tex
+++ b/sections/implementation.tex
@@ -74,7 +74,123 @@ Hierbei geht es nur um das Steam VR Setup welches bereits in dem Kapitel Steam b
\subsection{Beam Calibration}\label{subsec:beam-calibration}
\subsection{Schwerkraft}\label{subsec:gravity}
\subsection{Verkehrssystem}\label{subsec:traffic-system}
+In der Stadt von BeamVR ist auf den Straßen einiges los, dass wurde mithilfe eines neuem Verkehrssystems umgesetzt.
+Die Straßen sind mit, f\"ur den Spieler unsichtbaren, Objekten versehen die den Verkehr regeln.
+\textbf{Car Signals}
+Damit die Fahrzeuge in BeamVR wissen wo und vor allem wie sie auf den Straßen navigieren k\"onnen, wurde das Car Signal System entwickelt.
+Die Car Signals gibt es in zwei verschiedenen Versionen, f\"ur die linke Straßenseite wurden gr\"une und f\"ur die Rechte Seite wurden rote Signale erstellt.
+Die Signale funktionieren wie Checkpoints, jedes Auto wird nachdem es initialisiert wurde, von einem zum n\"achsten fahren.
+Jeder dieser Checkpoints verweist auf den nächsten, wie in einer Liste, daher weis jedes Fahrzeug wo die momentane Zielposition ist.
+\ref{fig:trafficsystem_next_signal_reference}
+Endpunkte sind spezielle Signale, welche auf keinen nachfolgenden Punkt mehr verweisen, erreicht ein Auto ein solchen Punkt hat es das Ziel erreicht.
+
+An Kreuzungen befinden sich mehrere dieser Car Signals, damit die Fahrzeuge auf der richtigen Spur bleiben und die Verkehrsregeln befolgen.
+Die gr\"unen Linien zeigen die m\"oglichen Routen die das Auto fahren kann, die Pfeile visualisieren in welche Richtung gefahren werden kann.
+\ref{fig:trafficsystem_crossroads}
+
+
+
+\begin{figure}
+ \centering
+ \includegraphics[scale=0.5]{pics/trafficsystem_carsignal_crossroads}
+ \caption{Traffic System - Crossroads}
+ \label{fig:trafficsystem_crossroads}
+\end{figure}
+
+\begin{figure}
+ \centering
+ \includegraphics[scale=0.7]{pics/trafficsystem_carsignal_signal_reference}
+ \caption{Traffic System - Next Signal Reference}
+ \label{fig:trafficsystem_next_signal_reference}
+\end{figure}
+
+
+\textbf{Car Spawn Points}
+Car Spawn Points sind blau dargestellte Punkte an denen Fahrzeuge, nach dem laden der Szene, initialisiert werden.
+\ref{fig:trafficsystem_car_spawn_points}
+Falls ein Auto einen Car Signal, welcher ein Endpunkt ist, erreicht wird es, nach einem kurzen Delay, an einem Respawn Point wieder erscheinen.
+Diese Punkte verweisen, \"ahnlich wie Car Signals, auf einen nachfolgenden Punkt, wo die Fahrzeuge hinfahren.
+
+%% IN QUELLCODEVERZEICHNIS PACKEN!
+\begin{lstlisting}{CarSpawnPoint.cs}
+public class CarSpawnPoint : MonoBehaviour
+{
+
+ //Location where the car should go after respawning
+ public CarSignal nextSignal;
+
+ //Position of the Respawnpoint;
+ public Vector3 position;
+
+ public void Start(){
+ position = transform.position;
+ }
+
+ public Vector3 GetPosition(){
+ return position;
+ }
+
+ public CarSignal GetNextSignal(){
+ return nextSignal;
+ }
+
+}
+\end{lstlisting}
+
+\begin{figure}
+ \centering
+ \includegraphics[scale=0.4]{pics/trafficsystem_respawn_point}
+ \caption{Traffic System - Car Spawn Points}
+ \label{fig:trafficsystem_car_spawn_points}
+\end{figure}
+
+
+\textbf{Car Manager}
+Der Car Manager regelt die maximale Anzahl an Fahrzeugen die gleichzeitig auf den Straßen fahren k\"onnen.
+Am Anfang werden n Fahrzeuge (n ist hierbei die maximale Anzahl an Autos) auf den Straßen initialisiert, indem ein zuf\"alliger Spawn Point ausgewählt wird.
+\begin{lstlisting}{car_manager_respawncars}
+
+public void SpawnCar(){
+ CarSpawnPoint newCarSpawnPoint = GetRandomSpawnPoint();
+ GameObject newCar = Instantiate(GetRandomCarModell(), newCarSpawnPoint.GetPosition(), newCarSpawnPoint.transform.rotation);
+ newCar.GetComponent().SetCarManager(this);
+ CarBehaviour carBehaviour = newCar.GetComponent();
+
+
+ carBehaviour.curSignal = newCarSpawnPoint.GetNextSignal();
+ carBehaviour.curPosition = newCarSpawnPoint.GetPosition();
+
+ currentCars.Add(newCar);
+ }
+\end{lstlisting}
+
+Weiters wird mithilfe der Funktion RespawnCars() ein Auto recycled, sobald es einen Endpunkt erreicht hat, indem der Manager die aktuelle Position und das n\"achste Ziel des Fahrzeuges neu setzt.
+\begin{lstlisting}{car_manager_respawncars}
+public void RespawnCars(GameObject finishedCar){
+ CarBehaviour carBehaviour = finishedCar.GetComponent();
+ CarSpawnPoint newCarSpawnPoint = GetRandomSpawnPoint();
+ carBehaviour.curSignal = newCarSpawnPoint.GetNextSignal();
+ carBehaviour.curPosition = newCarSpawnPoint.GetPosition();
+ }
+\end{lstlisting}
+
+\textbf{Car Behaviour}
+Jedes Fahrzeug erh\"alt nachdem es initialisiert wurde eine zufällige ID mit folgendem Aufbau "Car[0-9]BeamVR[0-9]", damit diese im sp\"ateren Verlauf des Spieles besser identifiziert werden können.
+In jedem Frame bewegt sich das Auto, mithilfe der Vector3.MoveTowards() Funktion, richtung dem Car signal, welches derzeit als Ziel festgelegt wurde.
+Wenn nun das momentante Ziel erreicht wurde, sucht das Gefährt in dem aktuellen Punkt die Referenz auf das nächste Signal und bewegt sich dort hin.
+
+Um zu verhindern, dass mehrere Fahrzeuge ineinander fahren,kann das Auto mithilfe eines Raycasts erkennen, was sich in einer bestimmten Distance vor sich befindet und im Notfall anhalten.
+
+\begin{lstlisting}{car_behaviour_raycast}
+...
+RaycastHit hit;
+ if (!Physics.Raycast(curPosition, transform.TransformDirection(Vector3.forward), out hit, carSeeingDist, layerMask))
+ {
+ ...
+ }
+...
+\end{lstlisting}
\section{3d Welt}\label{sec:3d-world}
Jedes Spiel braucht heutzutage eine Spielwelt, hierbei ist es egal ob es sich um eine 3D oder 2D Applikation handelt.