diff --git a/resources/Schema/Entities/MovementTest.xml b/resources/Schema/Entities/MovementTest.xml
index 8ad34c93..8a99df55 100644
--- a/resources/Schema/Entities/MovementTest.xml
+++ b/resources/Schema/Entities/MovementTest.xml
@@ -54,7 +54,10 @@
-
+
+ 0.49999982118606567
+ 2.5599997043609619
+
sModels/Widgets/Lights/DirectionalLightWidget.mesh
@@ -100,7 +103,7 @@
-
+
@@ -113,7 +116,7 @@
-
+
@@ -138,8 +141,7 @@
ActivateDeactiveShieldF
-
- 1
+
true
@@ -155,8 +157,8 @@
Models/Weapons/Blue/DefenderWeaponBlue.mesh
-
-
+
+
diff --git a/resources/Schema/Entities/PlayerAssaultBlue.xml b/resources/Schema/Entities/PlayerAssaultBlue.xml
index 8bceb701..cad75d5b 100644
--- a/resources/Schema/Entities/PlayerAssaultBlue.xml
+++ b/resources/Schema/Entities/PlayerAssaultBlue.xml
@@ -6,9 +6,7 @@
-
- 0.5
-
+
@@ -31,7 +29,6 @@
-
@@ -577,8 +574,8 @@
Schema/Entities/WeaponAssaultBlueWorld.xml
-
-
+
+
@@ -598,8 +595,8 @@
Schema/Entities/SidearmWeaponWorld.xml
-
-
+
+
@@ -644,7 +641,7 @@
- ReloadSwitchBlend
+ UpperBody
FinalMovementBlend
@@ -706,8 +703,7 @@
CrouchStrafeLeftF
-
- 1
+
true
@@ -718,8 +714,7 @@
CrouchStrafeRightF
-
- 1
+
true
@@ -732,8 +727,7 @@
CrouchWalkF
-
- 1
+
true
@@ -747,7 +741,6 @@
CrouchF
- 1
@@ -789,8 +782,7 @@
WalkF
-
- 1
+
true
@@ -801,8 +793,7 @@
RunF
-
- 1
+
true
@@ -825,8 +816,7 @@
StrafeLeftF
-
- 1
+
true
@@ -837,8 +827,7 @@
StrafeRightF
-
- 1
+
true
@@ -853,8 +842,7 @@
IdleF
-
- 1
+
true
@@ -881,7 +869,6 @@
JumpF
- 1
false
@@ -976,105 +963,58 @@
-
+
- ReloadSwitch
- WeaponActionBlend
- 1
- true
+ Idle
+ FireReload
-
+
- ReloadSwitchU
-
- 1
+ IdleAssaultRifleU
+
+ true
-
+
- IdleBlend
- ShootBlend
+ Fire
+ Reload
0
+ true
-
+
-
- IdlePrimary
- IdleSecondary
- 0
-
+
+ ReloadSwitchU
+
+ 0.5
+ false
+
-
-
-
-
- IdleAssaultRifleU
-
- 1
- true
-
-
-
-
-
-
-
-
- IdleSecWepU
-
- 1
- true
-
-
-
-
-
-
+
-
+
-
- ShootPrimary
- ShootSecondary
- 0
-
+
+ ShootFastRifleU
+
+
-
-
-
-
- ShootFastRifleU
-
- 1
-
-
-
-
-
-
-
-
- ShootSecWepFastU
-
-
-
-
-
-
+
diff --git a/resources/Schema/Entities/ShootingRange.xml b/resources/Schema/Entities/ShootingRange.xml
new file mode 100644
index 00000000..a05403c0
--- /dev/null
+++ b/resources/Schema/Entities/ShootingRange.xml
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCylinder.mesh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/Schema/Entities/ThirdPersonBlendTree.xml b/resources/Schema/Entities/ThirdPersonBlendTree.xml
new file mode 100644
index 00000000..eb6f319e
--- /dev/null
+++ b/resources/Schema/Entities/ThirdPersonBlendTree.xml
@@ -0,0 +1,528 @@
+
+
+
+
+
+ BlendTreeAim
+ BlendTreeAssault
+
+
+
+
+ Models/Characters/Assault/AssaultBlue.mesh
+
+
+
+
+
+
+
+
+
+ R_Arm_Weapon_Joint
+
+
+ AssaultWeapon
+
+
+
+
+
+ Schema/Entities/WeaponAssaultBlueWorld.xml
+
+
+
+
+
+
+
+
+
+
+
+ R_Arm_Weapon_Joint
+
+
+ SidearmWeapon
+
+
+
+
+
+ Schema/Entities/SidearmWeaponWorld.xml
+
+
+
+
+
+
+
+
+
+
+
+ AimPrimary
+ AimSecondary
+ 0
+ true
+
+
+
+
+
+
+
+ AimSecWepA
+
+ false
+ true
+
+
+
+
+
+
+
+
+ AimRifleA
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+ ReloadSwitchBlend
+ FinalMovementBlend
+
+
+
+
+
+
+
+ StandCrouchBlend
+ JumpDashBlend
+ 2.5146881298480398e-63
+ true
+
+
+
+
+
+
+
+ StandMovement
+ CrouchMovement
+ 0
+ true
+
+
+
+
+
+
+
+ MovementBlend
+ Idle
+ 1
+
+
+
+
+
+
+
+ Walk
+ StrafeLRBlend
+ 0
+
+
+
+
+
+
+
+ Left
+ Right
+ 0.033793529385008014
+
+
+
+
+
+
+
+ CrouchStrafeLeftF
+
+ true
+
+
+
+
+
+
+
+
+ CrouchStrafeRightF
+
+ true
+
+
+
+
+
+
+
+
+
+
+ CrouchWalkF
+
+ true
+
+
+
+
+
+
+
+
+
+
+ CrouchF
+
+
+
+
+
+
+
+
+
+
+
+ MovementBlend
+ Idle
+ 1
+
+
+
+
+
+
+
+ RunWalkBlend
+ StrafeLRBlend
+ 0
+
+
+
+
+
+
+
+ Walk
+ Run
+ 1
+
+
+
+
+
+
+
+ WalkF
+
+ true
+
+
+
+
+
+
+
+
+ RunF
+
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+ Left
+ Right
+ 0.033793529385008014
+
+
+
+
+
+
+
+ StrafeLeftF
+
+ true
+
+
+
+
+
+
+
+
+ StrafeRightF
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ IdleF
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ Jump
+ DashBlend
+ 1
+ true
+
+
+
+
+
+
+
+ JumpF
+
+ false
+
+
+
+
+
+
+
+
+ DashFBBlend
+ DashLRBlend
+ 0.014621149736541383
+
+
+
+
+
+
+
+ DashForward
+ DashBackward
+ 0.014363533804961248
+
+
+
+
+
+
+
+ DashForwardF
+
+ 2
+ false
+
+
+
+
+
+
+
+
+ DashBackwardF
+
+ 2
+ false
+
+
+
+
+
+
+
+
+
+
+ DashLeft
+ DashRight
+ 4.3244885367500671e-16
+
+
+
+
+
+
+
+ DashLeftF
+
+ 2
+ false
+
+
+
+
+
+
+
+
+ DashRightF
+
+ 2
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ReloadSwitch
+ WeaponActionBlend
+ 1
+ true
+
+
+
+
+
+
+
+ ReloadSwitchU
+
+
+
+
+
+
+
+
+
+ IdleBlend
+ ShootBlend
+ 0
+
+
+
+
+
+
+
+ IdlePrimary
+ IdleSecondary
+ 0
+
+
+
+
+
+
+
+ IdleAssaultRifleU
+
+ true
+
+
+
+
+
+
+
+
+ IdleSecWepU
+
+ true
+
+
+
+
+
+
+
+
+
+
+ ShootPrimary
+ ShootSecondary
+ 0
+
+
+
+
+
+
+
+ ShootFastRifleU
+
+
+
+
+
+
+
+
+
+ ShootSecWepFastU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Game/Systems/PlayerMovementSystem.cpp b/src/Game/Systems/PlayerMovementSystem.cpp
index 96061079..99edef2c 100644
--- a/src/Game/Systems/PlayerMovementSystem.cpp
+++ b/src/Game/Systems/PlayerMovementSystem.cpp
@@ -81,23 +81,22 @@ void PlayerMovementSystem::updateMovementControllers(double dt)
cameraOrientation.x += controller->Rotation().x;
// Limit camera pitch so we don't break our necks
cameraOrientation.x = glm::clamp(cameraOrientation.x, -glm::half_pi(), glm::half_pi());
+
// Set third person model aim pitch
EntityWrapper playerModel = player.FirstChildByName("PlayerModel");
-
- //Third-person aim
if (playerModel.Valid()) {
EntityWrapper aimPrimaryEntity = playerModel.FirstChildByName("AimPrimary");
if(aimPrimaryEntity.Valid()){
if(aimPrimaryEntity.HasComponent("Animation")) {
- float pitch = cameraOrientation.x + 0.2f;
- double time = (pitch + glm::half_pi()) / glm::pi();
+ float pitch = cameraOrientation.x;
+ double time = ((pitch + glm::half_pi()) / glm::pi());
(double&)aimPrimaryEntity["Animation"]["Time"] = time;
}
}
EntityWrapper aimSecondaryEntity = playerModel.FirstChildByName("AimSecondary");
if (aimSecondaryEntity.Valid()) {
if (aimSecondaryEntity.HasComponent("Animation")) {
- float pitch = cameraOrientation.x + 0.2f;
+ float pitch = cameraOrientation.x;
double time = (pitch + glm::half_pi()) / glm::pi();
(double&)aimSecondaryEntity["Animation"]["Time"] = time;
}