diff --git a/resources/Schema/Components.xsd b/resources/Schema/Components.xsd
index 42abed82..e2d07374 100644
--- a/resources/Schema/Components.xsd
+++ b/resources/Schema/Components.xsd
@@ -46,4 +46,5 @@
+
\ No newline at end of file
diff --git a/resources/Schema/Components/DoubleJump.xml b/resources/Schema/Components/DoubleJump.xml
new file mode 100644
index 00000000..bb0d3bc7
--- /dev/null
+++ b/resources/Schema/Components/DoubleJump.xml
@@ -0,0 +1,4 @@
+
+
+ 4.0
+
\ No newline at end of file
diff --git a/resources/Schema/Components/DoubleJump.xsd b/resources/Schema/Components/DoubleJump.xsd
new file mode 100644
index 00000000..65ff0419
--- /dev/null
+++ b/resources/Schema/Components/DoubleJump.xsd
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+ Enables a Player to double jump.
+
+
+
+ Vertical velocity set on double jump.
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/Schema/Components/Player.xml b/resources/Schema/Components/Player.xml
index 00cff257..429aa5fb 100644
--- a/resources/Schema/Components/Player.xml
+++ b/resources/Schema/Components/Player.xml
@@ -2,5 +2,6 @@
3
1.5
+ 4.0
\ No newline at end of file
diff --git a/resources/Schema/Components/Player.xsd b/resources/Schema/Components/Player.xsd
index 1b33d222..b121fd06 100644
--- a/resources/Schema/Components/Player.xsd
+++ b/resources/Schema/Components/Player.xsd
@@ -11,6 +11,9 @@
+
+ Vertical velocity set when jumping.
+
diff --git a/resources/Schema/Entities/Player.xml b/resources/Schema/Entities/Player.xml
index 7a5d2eb4..569dbc77 100644
--- a/resources/Schema/Entities/Player.xml
+++ b/resources/Schema/Entities/Player.xml
@@ -11,6 +11,7 @@
+
diff --git a/resources/Schema/Entities/PlayerRed.xml b/resources/Schema/Entities/PlayerRed.xml
index cd01632e..3285a91f 100644
--- a/resources/Schema/Entities/PlayerRed.xml
+++ b/resources/Schema/Entities/PlayerRed.xml
@@ -11,6 +11,7 @@
+
diff --git a/src/Game/Systems/PlayerMovementSystem.cpp b/src/Game/Systems/PlayerMovementSystem.cpp
index a144dd18..916573a4 100644
--- a/src/Game/Systems/PlayerMovementSystem.cpp
+++ b/src/Game/Systems/PlayerMovementSystem.cpp
@@ -116,12 +116,18 @@ void PlayerMovementSystem::updateMovementControllers(double dt)
ImGui::Text("velocity: (%f, %f, %f) |%f|", velocity.x, velocity.y, velocity.z, glm::length(velocity));
}
- //you cant jump and dash at the same time - since there is no friction in the air and we would thus dash much further in the air
- if (!controller->PlayerIsDashing() && controller->Jumping() && !controller->Crouching() && (isOnGround || !controller->DoubleJumping())) {
- (bool)cPhysics["IsOnGround"] = false;
+ if (isOnGround) {
+ controller->SetDoubleJumping(false);
+ }
+ //If player presses Jump and is not crouching.
+ if (controller->Jumping() && !controller->Crouching()) {
if (isOnGround) {
- controller->SetDoubleJumping(false);
- } else {
+ (bool)cPhysics["IsOnGround"] = false;
+ velocity.y = player["Player"]["JumpSpeed"];
+ } else if (player.HasComponent("DoubleJump") && !controller->DoubleJumping()) {
+ //Enter here if player can double jump and is doing so.
+ (bool)cPhysics["IsOnGround"] = false;
+ velocity.y = player["DoubleJump"]["DoubleJumpSpeed"];
if (IsClient) {
//put a hexagon at the players feet
auto hexagonEffect = ResourceManager::Load("Schema/Entities/DoubleJumpHexagon.xml");
@@ -134,7 +140,6 @@ void PlayerMovementSystem::updateMovementControllers(double dt)
m_EventBroker->Publish(e);
}
}
- velocity.y = 4.f;
}
if (player.HasComponent("AABB")) {