diff --git a/src/objects/Entities.cpp b/src/objects/Entities.cpp index ab66209b..e02bab96 100644 --- a/src/objects/Entities.cpp +++ b/src/objects/Entities.cpp @@ -307,7 +307,6 @@ void Entities::updatePhysics(float delta) { delta, substeps, false, - 1.0f, true, eid.uid ); diff --git a/src/objects/Entities.hpp b/src/objects/Entities.hpp index 1d3ac458..f54ebcda 100644 --- a/src/objects/Entities.hpp +++ b/src/objects/Entities.hpp @@ -65,7 +65,6 @@ struct Rigidbody { bool enabled = true; Hitbox hitbox; std::vector triggers; - float gravityMultiplier = 1.0f; }; struct UserComponent { diff --git a/src/objects/Player.cpp b/src/objects/Player.cpp index 0507489c..eba7f2cf 100644 --- a/src/objects/Player.cpp +++ b/src/objects/Player.cpp @@ -97,6 +97,7 @@ void Player::updateInput(PlayerInput& input, float delta) { hitbox->linearDamping = PLAYER_GROUND_DAMPING; hitbox->verticalDamping = flight; + hitbox->gravityMultiplier = flight ? 0.0f : 1.0f; if (flight){ hitbox->linearDamping = PLAYER_AIR_DAMPING; if (input.jump){ @@ -118,7 +119,7 @@ void Player::updateInput(PlayerInput& input, float delta) { (input.noclip && flight == noclip)){ flight = !flight; if (flight){ - hitbox->grounded = false; + hitbox->velocity.y += 1.0f; } } if (input.noclip) { diff --git a/src/physics/Hitbox.hpp b/src/physics/Hitbox.hpp index d757cb11..117ba20b 100644 --- a/src/physics/Hitbox.hpp +++ b/src/physics/Hitbox.hpp @@ -43,6 +43,7 @@ struct Hitbox { float linearDamping; bool verticalDamping = false; bool grounded = false; + float gravityMultiplier = 1.0f; Hitbox(glm::vec3 position, glm::vec3 halfsize); }; diff --git a/src/physics/PhysicsSolver.cpp b/src/physics/PhysicsSolver.cpp index d2254353..0f0735d8 100644 --- a/src/physics/PhysicsSolver.cpp +++ b/src/physics/PhysicsSolver.cpp @@ -22,7 +22,6 @@ void PhysicsSolver::step( float delta, uint substeps, bool shifting, - float gravityScale, bool collisions, entityid_t entity ) { @@ -33,6 +32,7 @@ void PhysicsSolver::step( const glm::vec3& half = hitbox->halfsize; glm::vec3& pos = hitbox->position; glm::vec3& vel = hitbox->velocity; + float gravityScale = hitbox->gravityMultiplier; bool prevGrounded = hitbox->grounded; hitbox->grounded = false; diff --git a/src/physics/PhysicsSolver.hpp b/src/physics/PhysicsSolver.hpp index 8de77ac8..75569b22 100644 --- a/src/physics/PhysicsSolver.hpp +++ b/src/physics/PhysicsSolver.hpp @@ -24,7 +24,6 @@ public: float delta, uint substeps, bool shifting, - float gravityScale, bool collisions, entityid_t entity );