diff --git a/resources/DefaultInput.ini b/resources/DefaultInput.ini
index 776cbecd..4dea88fd 100644
--- a/resources/DefaultInput.ini
+++ b/resources/DefaultInput.ini
@@ -27,4 +27,5 @@ M=SwitchToClient
P=SwitchToPlayer
K=TakeDamage,1500
F2=PerformanceTimingResetAllTimers
-F3=PerformanceTimingCreateExcelData
\ No newline at end of file
+F3=PerformanceTimingCreateExcelData
+F4=PickClass
\ No newline at end of file
diff --git a/resources/Schema/Entities/NewMapWSpectatorCam.xml b/resources/Schema/Entities/NewMapWSpectatorCam.xml
index bf1b4c2b..79cdc2be 100644
--- a/resources/Schema/Entities/NewMapWSpectatorCam.xml
+++ b/resources/Schema/Entities/NewMapWSpectatorCam.xml
@@ -3,7 +3,6 @@
- 0.0
15
@@ -24,6 +23,16 @@
+
+
+
+
+ Models/Props/Highground4.mesh
+
+
+
+
+
@@ -78,16 +87,6 @@
-
-
-
-
- Models/Props/Highground4.mesh
-
-
-
-
-
@@ -286,8 +285,8 @@
-
+
@@ -300,8 +299,8 @@
-
+
@@ -314,8 +313,8 @@
-
+
@@ -328,8 +327,8 @@
-
+
@@ -432,8 +431,8 @@
-
+
@@ -446,8 +445,8 @@
-
+
@@ -460,8 +459,8 @@
-
+
@@ -500,8 +499,8 @@
-
+
@@ -527,8 +526,8 @@
-
+
@@ -566,6 +565,19 @@
+
+
+
+
+ Models/Props/Walls/SmallWall3.mesh
+
+
+
+
+
+
+
+
@@ -691,8 +703,8 @@
-
+
@@ -705,8 +717,8 @@
-
+
@@ -779,19 +791,6 @@
-
-
-
-
- Models/Props/Walls/SmallWall3.mesh
-
-
-
-
-
-
-
-
@@ -1042,8 +1041,8 @@
-
+
@@ -1512,8 +1511,8 @@
-
+
@@ -1744,8 +1743,8 @@
-
+
@@ -1822,8 +1821,8 @@
-
+
@@ -1836,8 +1835,8 @@
-
+
@@ -1857,8 +1856,8 @@
-
+
@@ -1871,8 +1870,8 @@
-
+
@@ -1898,8 +1897,8 @@
-
+
@@ -2017,8 +2016,8 @@
-
+
@@ -2137,8 +2136,8 @@
-
+
@@ -2177,8 +2176,8 @@
-
+
@@ -2217,8 +2216,8 @@
-
+
@@ -2238,8 +2237,8 @@
-
+
@@ -2252,8 +2251,8 @@
-
+
@@ -2407,8 +2406,8 @@
-
+
@@ -2436,8 +2435,8 @@
-
+
@@ -2451,8 +2450,8 @@
-
+
@@ -2465,8 +2464,8 @@
-
+
@@ -2478,8 +2477,8 @@
-
+
@@ -2494,8 +2493,8 @@
-
+
@@ -2508,8 +2507,8 @@
-
+
@@ -2616,8 +2615,8 @@
-
+
@@ -2877,8 +2876,8 @@
-
+
@@ -2891,8 +2890,8 @@
-
+
@@ -2917,8 +2916,8 @@
-
+
@@ -2933,8 +2932,8 @@
-
+
@@ -2947,8 +2946,8 @@
-
+
@@ -2975,8 +2974,8 @@
-
+
@@ -2989,8 +2988,8 @@
-
+
@@ -3016,8 +3015,8 @@
-
+
@@ -3031,8 +3030,8 @@
-
+
@@ -3046,8 +3045,8 @@
-
+
@@ -3061,8 +3060,8 @@
-
+
@@ -3083,1153 +3082,39 @@
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalRed.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalRed.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalRed.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Walls/MediumWall1.mesh
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone1.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/BigStone.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/SmallStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/MediumStone2.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/PickUps/PickUpHolder.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/PickUps/PickUpHolder.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/PickUps/PickUpHolder.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/PickUps/PickUpHolder.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/PickUps/PickUpHolder.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/PickUps/PickUpHolder.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/PickUps/PickUpHolder.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/PickUps/PickUpHolder.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/PickUps/PickUpHolder.mesh
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Models/Props/Stones/AssaultHolder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/AssaultHolder.mesh
+
+
+
+
+
+
+
+
+
@@ -4347,22 +3232,8 @@
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/AssaultHolder.mesh
-
-
-
-
@@ -4375,8 +3246,28 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
@@ -4385,12 +3276,1120 @@
- Models/Props/Stones/AssaultHolder.mesh
+ Models/Props/Stones/MediumStone1.mesh
-
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone1.mesh
+
+
+
+
-
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalRed.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalRed.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/BigStone.mesh
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalRed.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Walls/MediumWall1.mesh
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone1.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/MediumStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/SmallStone2.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/PickUps/PickUpHolder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/PickUps/PickUpHolder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/PickUps/PickUpHolder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/PickUps/PickUpHolder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/PickUps/PickUpHolder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/PickUps/PickUpHolder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/PickUps/PickUpHolder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/PickUps/PickUpHolder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/PickUps/PickUpHolder.mesh
+
+
+
+
+
@@ -4402,6 +4401,19 @@
+
+
+
+
+ Models/Props/SciFiHolder1.mesh
+
+
+
+
+
+
+
+
@@ -4480,19 +4492,6 @@
-
-
-
-
- Models/Props/SciFiHolder1.mesh
-
-
-
-
-
-
-
-
@@ -4517,38 +4516,12 @@
- Models/Props/Stones/ShinyStoneCrystalRed.mesh
+ Models/Props/Stones/ShinyStoneCrystalBlue.mesh
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalRed.mesh
-
-
-
+
+
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalRed.mesh
-
-
-
-
@@ -4561,133 +4534,8 @@
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalBlue.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalBlue.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalBlue.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalBlue.mesh
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalRed.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalRed.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalBlue.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalBlue.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Props/Stones/ShinyStoneCrystalRed.mesh
-
-
-
-
-
@@ -4712,9 +4560,36 @@
Models/Props/Stones/ShinyStoneCrystalBlue.mesh
-
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalRed.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalBlue.mesh
+
+
+
+
-
@@ -4727,8 +4602,132 @@
-
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalRed.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalRed.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalRed.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalBlue.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalBlue.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalRed.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalBlue.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalRed.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Props/Stones/ShinyStoneCrystalBlue.mesh
+
+
+
+
+
@@ -4741,8 +4740,8 @@
-
+
@@ -4751,6 +4750,235 @@
+
+
+
+
+ Schema/Entities/PlayerRed.xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Characters/Assault/AssaultTPose.mesh
+ false
+
+
+
+
+
+
+
+
+
+
+
+ Models/Characters/Assault/AssaultTPose.mesh
+ false
+
+
+
+
+
+
+
+
+
+
+
+ Models/Characters/Assault/AssaultTPose.mesh
+ false
+
+
+
+
+
+
+
+
+
+
+
+ Models/Characters/Assault/AssaultTPose.mesh
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.10000000149011612
+
+
+
+ Models/Props/PickUps/AmmoPickUp.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.10000000149011612
+
+
+
+ Models/Props/PickUps/HealthPickUp.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.10000000149011612
+
+
+
+ Models/Props/PickUps/AmmoPickUp.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.10000000149011612
+
+
+
+ Models/Props/PickUps/HealthPickUp.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.10000000149011612
+
+
+
+ Models/Props/PickUps/HealthPickUp.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.10000000149011612
+
+
+
+ Models/Props/PickUps/HealthPickUp.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.10000000149011612
+
+
+
+ Models/Props/PickUps/AmmoPickUp.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.10000000149011612
+
+
+
+ Models/Props/PickUps/AmmoPickUp.mesh
+
+
+
+
+
+
+
+
+
+
+
@@ -4775,6 +5003,7 @@
4
+
Models/Core/UnitCylinder.mesh
@@ -4789,7 +5018,6 @@
-
@@ -4811,6 +5039,7 @@
3
+
Models/Core/UnitCylinder.mesh
@@ -4821,7 +5050,6 @@
-
@@ -4843,6 +5071,7 @@
2
+
Models/Core/UnitCylinder.mesh
@@ -4853,7 +5082,6 @@
-
@@ -4876,6 +5104,7 @@
1.5498908015879351
1
+
Models/Core/UnitCylinder.mesh
@@ -4886,7 +5115,6 @@
-
@@ -4910,6 +5138,7 @@
+
Models/Core/UnitCylinder.mesh
@@ -4924,7 +5153,6 @@
-
@@ -4937,6 +5165,17 @@
+
+
+
+ 10
+
+
+
+
+
+
+
@@ -4991,17 +5230,6 @@
-
-
-
- 10
-
-
-
-
-
-
-
@@ -5015,76 +5243,6 @@
-
-
-
-
- Schema/Entities/PlayerRed.xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Models/Characters/Assault/AssaultTPose.mesh
- false
-
-
-
-
-
-
-
-
-
-
-
- Models/Characters/Assault/AssaultTPose.mesh
- false
-
-
-
-
-
-
-
-
-
-
-
- Models/Characters/Assault/AssaultTPose.mesh
- false
-
-
-
-
-
-
-
-
-
-
-
- Models/Characters/Assault/AssaultTPose.mesh
- false
-
-
-
-
-
-
-
-
-
@@ -5122,7 +5280,7 @@
false
-
+
@@ -5135,7 +5293,7 @@
false
-
+
@@ -5155,366 +5313,286 @@
-
+
-
-
-
-
-
-
-
- 0.10000000149011612
-
-
-
- Models/Props/PickUps/HealthPickUp.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0.10000000149011612
-
-
-
- Models/Props/PickUps/AmmoPickUp.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0.10000000149011612
-
-
-
- Models/Props/PickUps/HealthPickUp.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0.10000000149011612
-
-
-
- Models/Props/PickUps/HealthPickUp.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0.10000000149011612
-
-
-
- Models/Props/PickUps/AmmoPickUp.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0.10000000149011612
-
-
-
- Models/Props/PickUps/HealthPickUp.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0.10000000149011612
-
-
-
- Models/Props/PickUps/AmmoPickUp.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0.10000000149011612
-
-
-
- Models/Props/PickUps/AmmoPickUp.mesh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ 0.049999997019767761
+
+
-
-
+
-
+
-
+
+
-
+
-
-
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
- Textures/Core/UnitHexagon.png
-
-
-
-
+
-
+
-
- 2
-
-
-
-
+
- Textures/Core/UnitHexagon_Rotated.png
+ Textures/Core/UnitRaptor.png
-
-
-
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Test/aM4ME4GR.png
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
- Textures/Core/UnitHexagon.png
-
-
-
-
+
-
+
-
- 3
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
+
+
-
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+ Textures/Core/UnitHexagon_Rotated.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+ Textures/Core/UnitHexagon_Rotated.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+ Textures/Core/UnitHexagon_Rotated.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+ 0.10332605343919568
+
+
+
+ Textures/Core/UnitHexagon_Rotated.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon_Rotated.png
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
+
-
- 4
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
+
+ 16
+ Fonts/DroidSans.ttf,64
+
+
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
- 0.59265931447347009
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
+
+
diff --git a/resources/Schema/Entities/OverwatchCamera.xml b/resources/Schema/Entities/OverwatchCamera.xml
new file mode 100644
index 00000000..323a62f2
--- /dev/null
+++ b/resources/Schema/Entities/OverwatchCamera.xml
@@ -0,0 +1,296 @@
+
+
+
+
+
+ 0.049999997019767761
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitRaptor.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Test/aM4ME4GR.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+ Textures/Core/UnitHexagon_Rotated.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+ Textures/Core/UnitHexagon_Rotated.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+ Textures/Core/UnitHexagon_Rotated.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+ 0.10332605343919568
+
+
+
+ Textures/Core/UnitHexagon_Rotated.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Textures/Core/UnitHexagon_Rotated.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ Fonts/DroidSans.ttf,64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/Schema/Entities/SpectatorCamera.xml b/resources/Schema/Entities/SpectatorCamera.xml
deleted file mode 100644
index 5c3dc514..00000000
--- a/resources/Schema/Entities/SpectatorCamera.xml
+++ /dev/null
@@ -1,219 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Time to respawn: 0
- Fonts/DroidSans.ttf,64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
- 2
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
- 3
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
- 4
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
- 0.59265931447347009
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures/Core/UnitHexagon_Rotated.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Game/Systems/PlayerSpawnSystem.cpp b/src/Game/Systems/PlayerSpawnSystem.cpp
index fbda849d..7a6881c4 100644
--- a/src/Game/Systems/PlayerSpawnSystem.cpp
+++ b/src/Game/Systems/PlayerSpawnSystem.cpp
@@ -105,7 +105,7 @@ void PlayerSpawnSystem::Update(double dt)
bool PlayerSpawnSystem::OnInputCommand(Events::InputCommand& e)
{
- if (e.Command != "PickTeam") {
+ if (e.Command != "PickTeam" && e.Command != "PickClass") {
return false;
}
@@ -113,11 +113,12 @@ bool PlayerSpawnSystem::OnInputCommand(Events::InputCommand& e)
return false;
}
- // A dead client should be able to swap to the spectator camera.
+ // A dead client should be able to swap to the overwatch camera.
if (IsClient && !LocalPlayer.Valid()) {
- // Set the spectator camera as active, if it exists.
- // Find the camera.
- EntityWrapper spectatorCam = m_World->GetFirstEntityByName("SpectatorCamera");
+ // Set the camera as active, if it exists.
+ // Find the respawn camera or class pick camera.
+ std::string camName = e.Command == "PickClass" ? "PickClassCamera" : "SpectatorCamera";
+ EntityWrapper spectatorCam = m_World->GetFirstEntityByName(camName);
if (spectatorCam.Valid() && spectatorCam.HasComponent("Camera")) {
Events::SetCamera eSetCamera;
eSetCamera.CameraEntity = spectatorCam;
@@ -135,10 +136,18 @@ bool PlayerSpawnSystem::OnInputCommand(Events::InputCommand& e)
auto iter = m_SpawnRequests.begin();
for (; iter != m_SpawnRequests.end(); ++iter) {
if (iter->PlayerID == e.PlayerID) {
+ // If player wants to switch class, remove their spawn request.
+ if (e.Command == "PickClass") {
+ m_SpawnRequests.erase(iter);
+ }
break;
}
}
+ if (e.Command == "PickClass") {
+ return true;
+ }
+
if (iter != m_SpawnRequests.end()) {
// If player is in queue to spawn, then change their team affiliation in the request.
iter->Team = (ComponentInfo::EnumType)e.Value;