From b7cd116e62fc482e9b171b9dac5632e05831ed0c Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 11 Mar 2026 23:11:23 +0300 Subject: [PATCH] cleanup --- src/physics/PhysicsSolver.cpp | 27 ++++++++------------------- src/physics/PhysicsSolver.hpp | 20 +++++++------------- src/world/Level.cpp | 2 +- 3 files changed, 16 insertions(+), 33 deletions(-) diff --git a/src/physics/PhysicsSolver.cpp b/src/physics/PhysicsSolver.cpp index cc0986364..9c1ed42ab 100644 --- a/src/physics/PhysicsSolver.cpp +++ b/src/physics/PhysicsSolver.cpp @@ -17,7 +17,7 @@ inline constexpr float MAX_FIX = 0.15f; static debug::Logger logger("physics-solver"); -PhysicsSolver::PhysicsSolver(glm::vec3 gravity) : gravity(std::move(gravity)) {} +PhysicsSolver::PhysicsSolver(const GlobalChunks& chunks, glm::vec3 gravity) : chunks(chunks), gravity(std::move(gravity)) {} static float calc_step_height( const GlobalChunks& chunks, @@ -116,12 +116,7 @@ static void calc_collision( } } -static bool calc_collision_neg_y( - Hitbox& hitbox, - const GlobalChunks& chunks, - const std::vector& solidHitboxes, - const glm::vec3& half -) { +bool PhysicsSolver::calcCollisionNegY(Hitbox& hitbox, const glm::vec3& half) { auto& pos = hitbox.position; auto& vel = hitbox.velocity; @@ -183,10 +178,9 @@ static bool calc_collision_neg_y( } void PhysicsSolver::calcCollisions( - const GlobalChunks& chunks, - Hitbox& hitbox, - glm::vec3& vel, - glm::vec3& pos, + Hitbox& hitbox, + glm::vec3& vel, + glm::vec3& pos, const glm::vec3& half, float stepHeight ) { @@ -205,7 +199,7 @@ void PhysicsSolver::calcCollisions( calc_collision<2, 1, 0, 1>(hitbox, chunks, solidHitboxes, half, stepHeight); pos.x = xpos; - if (calc_collision_neg_y(hitbox, chunks, solidHitboxes, half)) { + if (calcCollisionNegY(hitbox, half)) { hitbox.grounded = true; } @@ -290,7 +284,6 @@ void PhysicsSolver::calcCollisions( } void PhysicsSolver::calcSubstep( - const GlobalChunks& chunks, Hitbox& hitbox, glm::vec3& vel, glm::vec3& pos, @@ -311,7 +304,6 @@ void PhysicsSolver::calcSubstep( if (hitbox.type == BodyType::DYNAMIC) { calcCollisions( - chunks, hitbox, vel, pos, @@ -369,9 +361,7 @@ void PhysicsSolver::calcSubstep( } void PhysicsSolver::step( - const GlobalChunks& chunks, - float delta, - uint substeps + const GlobalChunks& chunks, float delta, uint substeps ) { for (auto hitbox : hitboxes) { hitbox->groundMaterial.clear(); @@ -386,7 +376,7 @@ void PhysicsSolver::step( glm::vec3& pos = hitbox->position; glm::vec3& vel = hitbox->velocity; hitbox->prevPosition = hitbox->position; - calcSubstep(chunks, *hitbox, vel, pos, dt, substeps); + calcSubstep(*hitbox, vel, pos, dt, substeps); } } @@ -412,7 +402,6 @@ void PhysicsSolver::step( } } - void PhysicsSolver::updateSensors(Hitbox& hitbox) { auto aabb = hitbox.getAABB(); diff --git a/src/physics/PhysicsSolver.hpp b/src/physics/PhysicsSolver.hpp index 3d167befd..e7b5138a5 100644 --- a/src/physics/PhysicsSolver.hpp +++ b/src/physics/PhysicsSolver.hpp @@ -15,12 +15,9 @@ struct Sensor; class PhysicsSolver { public: - PhysicsSolver(glm::vec3 gravity); - void step( - const GlobalChunks& chunks, - float delta, - uint substeps - ); + PhysicsSolver(const GlobalChunks& chunks, glm::vec3 gravity); + + void step(const GlobalChunks& chunks, float delta, uint substeps); auto& getSensorsWriteable() { return sensors; @@ -36,13 +33,13 @@ public: void removeSensor(Sensor* sensor); private: + const GlobalChunks& chunks; glm::vec3 gravity; std::vector sensors; std::vector solidHitboxes; std::vector hitboxes; void calcCollisions( - const GlobalChunks& chunks, Hitbox& hitbox, glm::vec3& vel, glm::vec3& pos, @@ -51,13 +48,10 @@ private: ); void calcSubstep( - const GlobalChunks& chunks, - Hitbox& hitbox, - glm::vec3& vel, - glm::vec3& pos, - float dt, - int substeps + Hitbox& hitbox, glm::vec3& vel, glm::vec3& pos, float dt, int substeps ); + bool calcCollisionNegY(Hitbox& hitbox, const glm::vec3& half); + void updateSensors(Hitbox& hitbox); }; diff --git a/src/world/Level.cpp b/src/world/Level.cpp index 2a1583bd7..e6d9000e1 100644 --- a/src/world/Level.cpp +++ b/src/world/Level.cpp @@ -26,7 +26,7 @@ Level::Level( : world(std::move(worldPtr)), content(content), chunks(std::make_unique(*this)), - physics(std::make_unique(glm::vec3(0, -22.6f, 0))), + physics(std::make_unique(*chunks, glm::vec3(0, -22.6f, 0))), events(std::make_unique()), entities(std::make_unique(*this)), players(std::make_unique(*this)),