mirror of
https://github.com/orange-cpp/omath.git
synced 2026-02-13 07:03:25 +00:00
Uses source engine camera trait for view angle calculation
Replaces the custom `view_angle_to` function with `omath::source_engine::CameraTrait::calc_look_at_angle` for vector3 view angle calculations. This change aligns with source engine conventions and improves code consistency.
This commit is contained in:
@@ -245,15 +245,6 @@ namespace omath
|
|||||||
return std::make_tuple(this->x, this->y, z);
|
return std::make_tuple(this->x, this->y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] Vector3 view_angle_to(const Vector3& other) const noexcept
|
|
||||||
{
|
|
||||||
const auto distance = distance_to(other);
|
|
||||||
const auto delta = other - *this;
|
|
||||||
|
|
||||||
return {angles::radians_to_degrees(std::asin(delta.z / distance)),
|
|
||||||
angles::radians_to_degrees(std::atan2(delta.y, delta.x)), 0};
|
|
||||||
}
|
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
bool operator<(const Vector3& other) const noexcept
|
bool operator<(const Vector3& other) const noexcept
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
#include <omath/projectile_prediction/proj_pred_engine_legacy.hpp>
|
#include <omath/projectile_prediction/proj_pred_engine_legacy.hpp>
|
||||||
|
#include <omath/engines/source_engine/traits/camera_trait.hpp>
|
||||||
TEST(UnitTestPrediction, PredictionTest)
|
TEST(UnitTestPrediction, PredictionTest)
|
||||||
{
|
{
|
||||||
constexpr omath::projectile_prediction::Target target{
|
constexpr omath::projectile_prediction::Target target{
|
||||||
@@ -10,8 +10,9 @@ TEST(UnitTestPrediction, PredictionTest)
|
|||||||
const auto viewPoint =
|
const auto viewPoint =
|
||||||
omath::projectile_prediction::ProjPredEngineLegacy(400, 1.f / 1000.f, 50, 5.f).maybe_calculate_aim_point(proj, target);
|
omath::projectile_prediction::ProjPredEngineLegacy(400, 1.f / 1000.f, 50, 5.f).maybe_calculate_aim_point(proj, target);
|
||||||
|
|
||||||
const auto [pitch, yaw, _] = proj.m_origin.view_angle_to(viewPoint.value()).as_tuple();
|
|
||||||
|
|
||||||
EXPECT_NEAR(42.547142, pitch, 0.01f);
|
const auto [pitch, yaw, _] =omath::source_engine::CameraTrait::calc_look_at_angle(proj.m_origin, viewPoint.value());
|
||||||
EXPECT_NEAR(-1.181189, yaw, 0.01f);
|
|
||||||
|
EXPECT_NEAR(-42.547142, pitch.as_degrees(), 0.01f);
|
||||||
|
EXPECT_NEAR(-1.181189, yaw.as_degrees(), 0.01f);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user