diff --git a/Actor_8cpp__incl.map b/Actor_8cpp__incl.map
index e7ecbe798..3f46c14ca 100644
--- a/Actor_8cpp__incl.map
+++ b/Actor_8cpp__incl.map
@@ -1,188 +1,190 @@
diff --git a/Actor_8cpp__incl.md5 b/Actor_8cpp__incl.md5
index 2c0b90e51..7ccd25ec7 100644
--- a/Actor_8cpp__incl.md5
+++ b/Actor_8cpp__incl.md5
@@ -1 +1 @@
-c90f4f4f6a8ee7fa1df7133ac2892e44
\ No newline at end of file
+edd5feb7b6a77319719a71b7a708ac7e
\ No newline at end of file
diff --git a/Actor_8cpp__incl.svg b/Actor_8cpp__incl.svg
index 1b8d2ad71..204970d51 100644
--- a/Actor_8cpp__incl.svg
+++ b/Actor_8cpp__incl.svg
@@ -47,7 +47,7 @@
@@ -59,8 +59,8 @@ var sectionId = 'dynsection-0';
Node1
-
-src/engine/Actor.cpp
+
+src/engine/Actor.cpp
@@ -68,8 +68,8 @@ var sectionId = 'dynsection-0';
Node2
-
-libultraship.h
+
+libultraship.h
@@ -77,8 +77,8 @@ var sectionId = 'dynsection-0';
Node1->Node2
-
-
+
+
@@ -86,8 +86,8 @@ var sectionId = 'dynsection-0';
Node3
-
-Matrix.h
+
+Matrix.h
@@ -95,8 +95,8 @@ var sectionId = 'dynsection-0';
Node1->Node3
-
-
+
+
@@ -104,8 +104,8 @@ var sectionId = 'dynsection-0';
Node6
-
-Actor.h
+
+Actor.h
@@ -113,8 +113,8 @@ var sectionId = 'dynsection-0';
Node1->Node6
-
-
+
+
@@ -122,53 +122,53 @@ var sectionId = 'dynsection-0';
Node26
-
-engine/World.h
+
+engine/World.h
-
+
Node1->Node26
-
-
-
+
+
+
-
-
-Node57
-
-
-engine/editor/Collision.h
+
+
+Node60
+
+
+engine/editor/Collision.h
-
-
-Node1->Node57
-
-
-
+
+
+Node1->Node60
+
+
+
-
-
-Node58
-
-
-math_util.h
+
+
+Node61
+
+
+math_util.h
-
-
-Node1->Node58
-
-
-
+
+
+Node1->Node61
+
+
+
@@ -176,8 +176,8 @@ var sectionId = 'dynsection-0';
Node3->Node2
-
-
+
+
@@ -185,8 +185,8 @@ var sectionId = 'dynsection-0';
Node4
-
-common_structs.h
+
+common_structs.h
@@ -194,8 +194,8 @@ var sectionId = 'dynsection-0';
Node3->Node4
-
-
+
+
@@ -203,8 +203,8 @@ var sectionId = 'dynsection-0';
Node5
-
-CoreMath.h
+
+CoreMath.h
@@ -212,8 +212,8 @@ var sectionId = 'dynsection-0';
Node3->Node5
-
-
+
+
@@ -221,8 +221,8 @@ var sectionId = 'dynsection-0';
Node4->Node2
-
-
+
+
@@ -230,8 +230,8 @@ var sectionId = 'dynsection-0';
Node5->Node2
-
-
+
+
@@ -239,17 +239,17 @@ var sectionId = 'dynsection-0';
Node6->Node2
-
-
+
+
-
+
Node6->Node4
-
-
-
+
+
+
@@ -257,8 +257,8 @@ var sectionId = 'dynsection-0';
Node7
-
-engine/SpawnParams.h
+
+engine/SpawnParams.h
@@ -266,8 +266,8 @@ var sectionId = 'dynsection-0';
Node6->Node7
-
-
+
+
@@ -275,8 +275,8 @@ var sectionId = 'dynsection-0';
Node12
-
-engine/editor/EditorMath.h
+
+engine/editor/EditorMath.h
@@ -284,8 +284,8 @@ var sectionId = 'dynsection-0';
Node6->Node12
-
-
+
+
@@ -293,17 +293,17 @@ var sectionId = 'dynsection-0';
Node20
-
-macros.h
+
+macros.h
-
+
Node6->Node20
-
-
-
+
+
+
@@ -311,17 +311,17 @@ var sectionId = 'dynsection-0';
Node22
-
-main.h
+
+main.h
-
+
Node6->Node22
-
-
-
+
+
+
@@ -329,17 +329,17 @@ var sectionId = 'dynsection-0';
Node25
-
-camera.h
+
+camera.h
-
+
Node6->Node25
-
-
-
+
+
+
@@ -347,8 +347,8 @@ var sectionId = 'dynsection-0';
Node7->Node4
-
-
+
+
@@ -356,8 +356,8 @@ var sectionId = 'dynsection-0';
Node7->Node5
-
-
+
+
@@ -365,8 +365,8 @@ var sectionId = 'dynsection-0';
Node8
-
-vector
+
+vector
@@ -374,8 +374,8 @@ var sectionId = 'dynsection-0';
Node7->Node8
-
-
+
+
@@ -383,8 +383,8 @@ var sectionId = 'dynsection-0';
Node9
-
-optional
+
+optional
@@ -392,8 +392,8 @@ var sectionId = 'dynsection-0';
Node7->Node9
-
-
+
+
@@ -401,8 +401,8 @@ var sectionId = 'dynsection-0';
Node10
-
-string
+
+string
@@ -410,8 +410,8 @@ var sectionId = 'dynsection-0';
Node7->Node10
-
-
+
+
@@ -419,8 +419,8 @@ var sectionId = 'dynsection-0';
Node11
-
-nlohmann/json.hpp
+
+nlohmann/json.hpp
@@ -428,17 +428,17 @@ var sectionId = 'dynsection-0';
Node7->Node11
-
-
+
+
-
+
Node12->Node4
-
-
-
+
+
+
@@ -446,8 +446,8 @@ var sectionId = 'dynsection-0';
Node12->Node5
-
-
+
+
@@ -455,8 +455,8 @@ var sectionId = 'dynsection-0';
Node12->Node8
-
-
+
+
@@ -464,8 +464,8 @@ var sectionId = 'dynsection-0';
Node13
-
-libultraship/libultraship.h
+
+libultraship/libultraship.h
@@ -473,8 +473,8 @@ var sectionId = 'dynsection-0';
Node12->Node13
-
-
+
+
@@ -482,8 +482,8 @@ var sectionId = 'dynsection-0';
Node14
-
-libultra/gbi.h
+
+libultra/gbi.h
@@ -491,8 +491,8 @@ var sectionId = 'dynsection-0';
Node12->Node14
-
-
+
+
@@ -500,8 +500,8 @@ var sectionId = 'dynsection-0';
Node15
-
-libultra/types.h
+
+libultra/types.h
@@ -509,8 +509,8 @@ var sectionId = 'dynsection-0';
Node12->Node15
-
-
+
+
@@ -518,8 +518,8 @@ var sectionId = 'dynsection-0';
Node16
-
-GameObject.h
+
+GameObject.h
@@ -527,8 +527,8 @@ var sectionId = 'dynsection-0';
Node12->Node16
-
-
+
+
@@ -536,17 +536,17 @@ var sectionId = 'dynsection-0';
Node18
-
-fast/Fast3dWindow.h
+
+fast/Fast3dWindow.h
-
+
Node12->Node18
-
-
-
+
+
+
@@ -554,26 +554,26 @@ var sectionId = 'dynsection-0';
Node19
-
-fast/interpreter.h
+
+fast/interpreter.h
-
+
Node12->Node19
-
-
-
+
+
+
-
+
Node16->Node4
-
-
-
+
+
+
@@ -581,8 +581,8 @@ var sectionId = 'dynsection-0';
Node16->Node5
-
-
+
+
@@ -590,8 +590,8 @@ var sectionId = 'dynsection-0';
Node16->Node7
-
-
+
+
@@ -599,8 +599,8 @@ var sectionId = 'dynsection-0';
Node16->Node8
-
-
+
+
@@ -608,8 +608,8 @@ var sectionId = 'dynsection-0';
Node16->Node12
-
-
+
+
@@ -617,8 +617,8 @@ var sectionId = 'dynsection-0';
Node16->Node13
-
-
+
+
@@ -626,8 +626,8 @@ var sectionId = 'dynsection-0';
Node16->Node14
-
-
+
+
@@ -635,44 +635,17 @@ var sectionId = 'dynsection-0';
Node16->Node15
-
-
-
-
-
-
-
-Node17
-
-
-src/port/ui/DefaultProperties.h
-
-
-
-
-
-Node16->Node17
-
-
-
-
-
-
-
-
-Node17->Node13
-
-
-
+
+
-
+
Node20->Node2
-
-
-
+
+
+
@@ -680,26 +653,26 @@ var sectionId = 'dynsection-0';
Node21
-
-math.h
+
+math.h
-
+
Node20->Node21
-
-
-
+
+
+
-
+
Node22->Node4
-
-
-
+
+
+
@@ -707,98 +680,98 @@ var sectionId = 'dynsection-0';
Node23
-
-mk64.h
+
+mk64.h
-
+
Node22->Node23
-
-
-
+
+
+
-
+
Node23->Node2
-
-
-
+
+
+
-
+
Node23->Node14
-
-
-
+
+
+
-
+
Node25->Node2
-
-
-
+
+
+
-
+
Node25->Node4
-
-
-
+
+
+
-
+
Node26->Node2
-
-
-
+
+
+
-
+
Node26->Node5
-
-
-
+
+
+
-
+
Node26->Node6
-
-
-
+
+
+
-
+
Node26->Node16
-
-
-
+
+
+
-
+
Node26->Node25
-
-
-
+
+
+
@@ -806,17 +779,17 @@ var sectionId = 'dynsection-0';
Node27
-
-engine/tracks/Track.h
+
+engine/tracks/Track.h
-
+
Node26->Node27
-
-
-
+
+
+
@@ -824,17 +797,17 @@ var sectionId = 'dynsection-0';
Node33
-
-objects.h
+
+objects.h
-
+
Node26->Node33
-
-
-
+
+
+
@@ -842,17 +815,17 @@ var sectionId = 'dynsection-0';
Node42
-
-engine/cameras/GameCamera.h
+
+engine/cameras/GameCamera.h
-
+
Node26->Node42
-
-
-
+
+
+
@@ -860,17 +833,17 @@ var sectionId = 'dynsection-0';
Node43
-
-objects/Object.h
+
+objects/Object.h
-
+
Node26->Node43
-
-
-
+
+
+
@@ -878,17 +851,17 @@ var sectionId = 'dynsection-0';
Node44
-
-Cup.h
+
+Cup.h
-
+
Node26->Node44
-
-
-
+
+
+
@@ -896,215 +869,215 @@ var sectionId = 'dynsection-0';
Node45
-
-memory
+
+memory
-
+
Node26->Node45
-
-
-
-
-
-
-
-
-Node46
-
-
-PlayerBombKart.h
-
-
-
-
-
-Node26->Node46
-
-
-
+
+
+
Node47
-
-
-TrainCrossing.h
+
+
+unordered_map
-
+
Node26->Node47
-
-
-
-
-
-
-
-
-Node48
-
-
-unordered_map
-
-
-
-
-
-Node26->Node48
-
-
-
-
-
-
-
-
-Node49
-
-
-utility
-
-
-
-
-
-Node26->Node49
-
-
-
+
+
+
Node50
-
-
-RaceManager.h
+
+
+PlayerBombKart.h
-
+
Node26->Node50
-
-
-
+
+
+
+
+
+
+
+
+Node51
+
+
+TrainCrossing.h
+
+
+
+
+
+Node26->Node51
+
+
+
Node52
-
-
-StaticMeshActor.h
+
+
+utility
-
+
Node26->Node52
-
-
-
+
+
+
Node53
-
-
-particles/ParticleEmitter.h
+
+
+RaceManager.h
-
+
Node26->Node53
-
-
-
-
-
-
-
-
-Node54
-
-
-editor/Editor.h
-
-
-
-
-
-Node26->Node54
-
-
-
+
+
+
Node55
-
-
-port/Game.h
+
+
+StaticMeshActor.h
-
+
Node26->Node55
-
-
-
+
+
+
+
+
+
+
+
+Node56
+
+
+particles/ParticleEmitter.h
+
+
+
+
+
+Node26->Node56
+
+
+
+
+
+
+
+
+Node57
+
+
+editor/Editor.h
+
+
+
+
+
+Node26->Node57
+
+
+
+
+
+
+
+
+Node58
+
+
+port/Game.h
+
+
+
+
+
+Node26->Node58
+
+
+
-
+
Node27->Node4
-
-
-
+
+
+
-
+
Node27->Node5
-
-
-
+
+
+
-
+
Node27->Node13
-
-
-
+
+
+
-
+
Node27->Node25
-
-
-
+
+
+
@@ -1112,17 +1085,17 @@ var sectionId = 'dynsection-0';
Node28
-
-defines.h
+
+defines.h
-
+
Node27->Node28
-
-
-
+
+
+
@@ -1130,17 +1103,17 @@ var sectionId = 'dynsection-0';
Node29
-
-data/some_data.h
+
+data/some_data.h
-
+
Node27->Node29
-
-
-
+
+
+
@@ -1148,17 +1121,17 @@ var sectionId = 'dynsection-0';
Node34
-
-bomb_kart.h
+
+bomb_kart.h
-
+
Node27->Node34
-
-
-
+
+
+
@@ -1166,17 +1139,17 @@ var sectionId = 'dynsection-0';
Node35
-
-path_spawn_metadata.h
+
+path_spawn_metadata.h
-
+
Node27->Node35
-
-
-
+
+
+
@@ -1184,17 +1157,17 @@ var sectionId = 'dynsection-0';
Node36
-
-waypoints.h
+
+waypoints.h
-
+
Node27->Node36
-
-
-
+
+
+
@@ -1202,17 +1175,17 @@ var sectionId = 'dynsection-0';
Node38
-
-sounds.h
+
+sounds.h
-
+
Node27->Node38
-
-
-
+
+
+
@@ -1220,513 +1193,558 @@ var sectionId = 'dynsection-0';
Node39
-
-code_800029B0.h
+
+code_800029B0.h
-
+
Node27->Node39
-
-
-
+
+
+
-
+
Node29->Node14
-
-
-
+
+
+
-
+
Node29->Node33
-
-
-
+
+
+
-
+
Node33->Node4
-
-
-
+
+
+
-
+
Node34->Node4
-
-
-
+
+
+
-
+
Node34->Node23
-
-
-
+
+
+
-
+
Node35->Node4
-
-
-
+
+
+
-
+
Node35->Node34
-
-
-
+
+
+
-
+
Node35->Node36
-
-
-
+
+
+
-
+
Node36->Node4
-
-
-
+
+
+
-
+
Node39->Node2
-
-
-
+
+
+
-
+
Node39->Node5
-
-
-
+
+
+
-
+
Node39->Node20
-
-
-
+
+
+
-
+
Node39->Node25
-
-
-
+
+
+
-
+
Node42->Node2
-
-
-
+
+
+
-
+
Node42->Node5
-
-
-
+
+
+
-
+
Node42->Node25
-
-
-
+
+
+
-
+
Node43->Node2
-
-
-
+
+
+
-
+
Node43->Node7
-
-
-
+
+
+
-
+
Node43->Node12
-
-
-
+
+
+
-
+
Node43->Node25
-
-
-
+
+
+
-
+
Node43->Node33
-
-
-
+
+
+
-
+
Node44->Node8
-
-
-
+
+
+
-
+
Node44->Node27
-
-
-
+
+
+
-
+
Node44->Node45
-
-
-
+
+
+
+
+
+
+
+
+Node46
+
+
+registry/Registry.h
+
+
+
+
+
+Node44->Node46
+
+
+
-
+
Node46->Node2
-
-
-
+
+
+
-
-
-Node46->Node5
-
-
-
+
+
+Node46->Node10
+
+
+
-
-
-Node47->Node2
-
-
-
+
+
+Node46->Node47
+
+
+
-
-
-Node47->Node4
-
-
-
+
+
+Node50->Node2
+
+
+
-
-
-Node50->Node28
-
-
-
+
+
+Node50->Node5
+
+
+
-
-
-Node51
-
-
-libultraship/libultra
-/gbi.h
+
+
+Node51->Node2
+
+
+
-
-
-Node50->Node51
-
-
-
+
+
+Node51->Node4
+
+
+
-
-
-Node52->Node2
-
-
-
+
+
+Node53->Node28
+
+
+
-
-
-Node52->Node5
-
-
-
+
+
+Node54
+
+
+libultraship/libultra
+/gbi.h
-
-
-Node52->Node11
-
-
-
-
-
-
-
-
-Node52->Node14
-
-
-
-
-
-
-
-
-Node53->Node2
-
-
-
-
-
-
-
-
-Node53->Node4
-
-
-
-
-
-
-
-
-Node53->Node20
-
-
-
-
-
-
-
-
-Node53->Node22
-
-
-
-
-
-
-
-
-Node53->Node25
-
-
-
-
-
-
-
-
-Node54->Node13
-
-
-
-
-
-
-
-
-Node54->Node14
-
-
-
-
-
-
-
-
-Node54->Node28
-
-
-
+
+
+Node53->Node54
+
+
+
-
+
Node55->Node2
-
-
-
+
+
+
-
-
-Node55->Node25
-
-
-
+
+
+Node55->Node5
+
+
+
-
-
-Node55->Node27
-
-
-
+
+
+Node55->Node11
+
+
+
-
-
-Node55->Node39
-
-
-
+
+
+Node55->Node14
+
+
+
-
-
-Node57->Node6
-
-
-
+
+
+Node56->Node2
+
+
+
-
-
-Node57->Node12
-
-
-
+
+
+Node56->Node4
+
+
+
+
+
+
+
+
+Node56->Node20
+
+
+
+
+
+
+
+
+Node56->Node22
+
+
+
+
+
+
+
+
+Node56->Node25
+
+
+
-
+
Node57->Node13
-
-
-
+
+
+
-
+
Node57->Node14
-
-
-
+
+
+
-
-
-Node57->Node16
-
-
-
-
-
-
-
-
-Node57->Node43
-
-
-
+
+
+Node57->Node28
+
+
+
-
+
Node58->Node2
-
-
-
+
+
+
-
-
-Node58->Node4
-
-
-
+
+
+Node58->Node25
+
+
+
+
+
+
+
+
+Node58->Node27
+
+
+
+
+
+
+
+
+Node58->Node39
+
+
+
+
+
+
+
+
+Node60->Node6
+
+
+
+
+
+
+
+
+Node60->Node12
+
+
+
+
+
+
+
+
+Node60->Node13
+
+
+
+
+
+
+
+
+Node60->Node14
+
+
+
+
+
+
+
+
+Node60->Node16
+
+
+
+
+
+
+
+
+Node60->Node43
+
+
+
+
+
+
+
+
+Node61->Node2
+
+
+
+
+
+
+
+
+Node61->Node4
+
+
+
diff --git a/Actor_8cpp__incl_org.svg b/Actor_8cpp__incl_org.svg
index fef20009a..df4003179 100644
--- a/Actor_8cpp__incl_org.svg
+++ b/Actor_8cpp__incl_org.svg
@@ -4,16 +4,16 @@
-