diff --git a/resources/Schema/Components/Player.xml b/resources/Schema/Components/Player.xml
index a9ecc6be..b51326aa 100644
--- a/resources/Schema/Components/Player.xml
+++ b/resources/Schema/Components/Player.xml
@@ -1,4 +1,5 @@
- 0.2
+ 3
+ 1.5
\ No newline at end of file
diff --git a/resources/Schema/Components/Player.xsd b/resources/Schema/Components/Player.xsd
index 89c4a398..13948dc2 100644
--- a/resources/Schema/Components/Player.xsd
+++ b/resources/Schema/Components/Player.xsd
@@ -10,6 +10,7 @@
+
diff --git a/resources/Schema/Entities/MovementTest.xml b/resources/Schema/Entities/MovementTest.xml
index 9ea1ae68..00f94120 100644
--- a/resources/Schema/Entities/MovementTest.xml
+++ b/resources/Schema/Entities/MovementTest.xml
@@ -13,6 +13,7 @@
Models/Core/UnitCube.obj
+ false
@@ -93,6 +94,7 @@
Models/Core/UnitCube.obj
+ false
@@ -107,6 +109,7 @@
Models/Core/UnitCube.obj
+ false
@@ -121,6 +124,7 @@
Models/Core/UnitCube.obj
+ false
diff --git a/resources/Schema/Entities/Player.xml b/resources/Schema/Entities/Player.xml
index fa8b7686..4398dcc1 100644
--- a/resources/Schema/Entities/Player.xml
+++ b/resources/Schema/Entities/Player.xml
@@ -7,6 +7,9 @@
+
+
+
3
@@ -17,7 +20,7 @@
-
+
@@ -27,19 +30,18 @@
-
-
Fonts/DroidSans.ttf,100
+ false
-
+
@@ -85,6 +87,33 @@
+
+
+
+ Models/Core/UnitCube.obj
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+ Models/Core/UnitCube.obj
+
+ false
+
+
+
+
+
+
+
diff --git a/src/Game/Systems/PlayerMovementSystem.cpp b/src/Game/Systems/PlayerMovementSystem.cpp
index 10fc29f6..c5b55cde 100644
--- a/src/Game/Systems/PlayerMovementSystem.cpp
+++ b/src/Game/Systems/PlayerMovementSystem.cpp
@@ -37,12 +37,27 @@ void PlayerMovementSystem::Update(double dt)
ori.y += controller->Rotation().y;
glm::vec3& pos = cTransform["Position"];
- pos += controller->Movement() * glm::inverse(glm::quat(ori)) * (float)player["Player"]["MovementSpeed"] * (float)dt;
+ float speed;
+ if (controller->Crouching()) {
+ speed = player["Player"]["CrouchSpeed"];
+ } else {
+ speed = player["Player"]["MovementSpeed"];
+ }
+ pos += controller->Movement() * glm::inverse(glm::quat(ori)) * speed * (float)dt;
if (player.HasComponent("Physics")) {
- if (controller->Jumping()) {
- glm::vec3& velocity = player["Physics"]["Velocity"];
- velocity.y += 10.f;
+ glm::vec3& velocity = player["Physics"]["Velocity"];
+ if (controller->Jumping() && !controller->Crouching() && velocity.y == 0.f) {
+ velocity.y += 4.f;
+ }
+ }
+
+ if (player.HasComponent("AABB")) {
+ glm::vec3& size = player["AABB"]["Size"];
+ if (controller->Crouching()) {
+ size = glm::vec3(1.f, 1.f, 1.f);
+ } else {
+ size = glm::vec3(1.f, 1.6f, 1.f);
}
}