diff --git a/include/uml/prediction/Engine.h b/include/uml/prediction/Engine.h index 9971271..8a94488 100644 --- a/include/uml/prediction/Engine.h +++ b/include/uml/prediction/Engine.h @@ -15,7 +15,8 @@ namespace uml::prediction class Engine { public: - explicit Engine(float gravityConstant, float simulationTimeStep, float maximumSimulationTime); + explicit Engine(float gravityConstant, float simulationTimeStep, + float maximumSimulationTime, float distanceTolerance); [[nodiscard]] std::optional MaybeCalculateAimPoint(const Projectile& projectile, const Target& target) const; @@ -24,6 +25,7 @@ namespace uml::prediction const float m_gravityConstant; const float m_simulationTimeStep; const float m_maximumSimulationTime; + const float m_distanceTolerance; [[nodiscard]] std::optional MaybeCalculateProjectileLaunchPitchAngle(const Projectile& projectile, diff --git a/source/prediction/Engine.cpp b/source/prediction/Engine.cpp index 2205fce..09a5877 100644 --- a/source/prediction/Engine.cpp +++ b/source/prediction/Engine.cpp @@ -10,10 +10,12 @@ namespace uml::prediction { - Engine::Engine(const float gravityConstant, const float simulationTimeStep, const float maximumSimulationTime) + Engine::Engine(const float gravityConstant, const float simulationTimeStep, + const float maximumSimulationTime, float distanceTolerance) : m_gravityConstant(gravityConstant), m_simulationTimeStep(simulationTimeStep), - m_maximumSimulationTime(maximumSimulationTime) + m_maximumSimulationTime(maximumSimulationTime), + m_distanceTolerance(distanceTolerance) { } @@ -66,6 +68,6 @@ namespace uml::prediction const auto yaw = projectile.m_origin.ViewAngleTo(targetPosition).y; const auto projectilePosition = projectile.PredictPosition(pitch, yaw, time, m_gravityConstant); - return projectilePosition.DistTo(targetPosition) <= 10.f; + return projectilePosition.DistTo(targetPosition) <= m_distanceTolerance; } } diff --git a/tests/UnitTestColor.cpp b/tests/UnitTestColor.cpp index 02700e5..3eb3ea0 100644 --- a/tests/UnitTestColor.cpp +++ b/tests/UnitTestColor.cpp @@ -4,8 +4,8 @@ TEST(x,x) { uml::prediction::Target target{.m_origin = {100, 0, 60}, .m_velocity = {0, 0, 0}, .m_isAirborne = false}; - uml::prediction::Projectile proj = {.m_origin = {3,2,1}, .m_launchSpeed = 400, .m_gravityScale= 0.4}; - auto vel = uml::prediction::Engine(400, 1.f / 10000.f, 50).MaybeCalculateAimPoint(proj, target); + uml::prediction::Projectile proj = {.m_origin = {3,2,1}, .m_launchSpeed = 5000, .m_gravityScale= 0.4}; + auto vel = uml::prediction::Engine(400, 1.f / 1000.f, 50, 5.f).MaybeCalculateAimPoint(proj, target); auto pitch = proj.m_origin.ViewAngleTo(vel.value()).x;