diff --git a/assets b/assets
index 5f3ab8b3..75778193 160000
--- a/assets
+++ b/assets
@@ -1 +1 @@
-Subproject commit 5f3ab8b35ddce150e972445fb2894fb9e9637258
+Subproject commit 757781933738bc4158c5c26750594b70acd537cd
diff --git a/resources/Schema/Entities/MovementTest.xml b/resources/Schema/Entities/MovementTest.xml
index 6551bd75..199174ae 100644
--- a/resources/Schema/Entities/MovementTest.xml
+++ b/resources/Schema/Entities/MovementTest.xml
@@ -198,7 +198,7 @@
-
+
diff --git a/resources/Schema/Entities/Player.xml b/resources/Schema/Entities/Player.xml
index 1ec7927b..1ee21a33 100644
--- a/resources/Schema/Entities/Player.xml
+++ b/resources/Schema/Entities/Player.xml
@@ -7,7 +7,6 @@
-
5
@@ -18,8 +17,7 @@
-
-
+
@@ -51,6 +49,7 @@
Models/Camera.mesh
+ false
@@ -77,13 +76,15 @@
+
+ Hold Pos
+ 1
+
- Models/AssaultHeadless.mesh
+ Models/AssaultAnimated.mesh
-
-
-
+
diff --git a/src/Game/Systems/PlayerMovementSystem.cpp b/src/Game/Systems/PlayerMovementSystem.cpp
index 5c75a673..0f6588be 100644
--- a/src/Game/Systems/PlayerMovementSystem.cpp
+++ b/src/Game/Systems/PlayerMovementSystem.cpp
@@ -36,15 +36,18 @@ void PlayerMovementSystem::Update(double dt)
glm::vec3& ori = cTransform["Orientation"];
ori.y += controller->Rotation().y;
+ float playerMovementSpeed = player["Player"]["MovementSpeed"];
+ float playerCrouchSpeed = player["Player"]["CrouchSpeed"];
+
if (player.HasComponent("Physics")) {
ComponentWrapper cPhysics = player["Physics"];
glm::vec3 wishDirection = controller->Movement() * glm::inverse(glm::quat(ori));
float wishSpeed;
if (controller->Crouching()) {
- wishSpeed = player["Player"]["CrouchSpeed"];
+ wishSpeed = playerCrouchSpeed;
} else {
- wishSpeed = player["Player"]["MovementSpeed"];
+ wishSpeed = playerMovementSpeed;
}
glm::vec3& velocity = cPhysics["Velocity"];
ImGui::Text("velocity: (%f, %f, %f)", velocity.x, velocity.y, velocity.z);
@@ -85,8 +88,33 @@ void PlayerMovementSystem::Update(double dt)
// size = glm::vec3(1.f, 1.6f, 1.f);
// }
//}
+
+ // Animations
+ EntityWrapper playerModel = player.FirstChildByName("PlayerModel");
+ if (playerModel.Valid()) {
+ ComponentWrapper cAnimation = playerModel["Animation"];
+
+ float movementLength = glm::length(groundVelocity);
+ if (glm::length(controller->Movement()) > 0.f) {
+ if (controller->Crouching()) {
+ cAnimation["Name"] = "Crouch Walk";
+ (double&)cAnimation["Speed"] = 1.f * -glm::sign(controller->Movement().z);
+ } else {
+ cAnimation["Name"] = "Run";
+ (double&)cAnimation["Speed"] = 2.f * -glm::sign(controller->Movement().z);
+ }
+ } else {
+ if (controller->Crouching()) {
+ cAnimation["Name"] = "Crouch";
+ (double&)cAnimation["Speed"] = 1.f;
+ } else {
+ cAnimation["Name"] = "Hold Pos";
+ (double&)cAnimation["Speed"] = 1.f;
+ }
+ }
+ }
}
-
+
controller->Reset();
}
}