added code

This commit is contained in:
2026-04-12 11:12:17 +03:00
parent 28e86fc355
commit fde764c1fa
2 changed files with 51 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
//
// Created by orange on 4/12/2026.
//
#pragma once
#include "navigation_mesh.hpp"
#include "omath/linear_algebra/vector3.hpp"
#include <functional>
namespace omath::pathfinding
{
class WalkBot
{
public:
void update(const Vector3<float>& bot_position, const Vector3<float>& target_position, float min_node_distance) const;
private:
std::weak_ptr<NavigationMesh> m_mav_mesh;
float m_min_distance_to_path_point;
std::optional<std::function<void(const Vector3<float>&)>> m_on_next_path_node = nullptr;
};
} // namespace omath::pathfinding

View File

@@ -0,0 +1,31 @@
//
// Created by orange on 4/12/2026.
//
#include "omath/pathfinding/walk_bot.hpp"
#include "omath/pathfinding/a_star.hpp"
namespace omath::pathfinding
{
void WalkBot::update(const Vector3<float>& bot_position, const Vector3<float>& target_position,
const float min_node_distance) const
{
const auto nav_mesh = m_mav_mesh.lock();
if (!nav_mesh)
return;
const auto path = Astar::find_path(bot_position, target_position, *nav_mesh);
if (path.empty())
return;
if (!m_on_next_path_node.has_value())
return;
if (path.size() > 1 && path.front().distance_to(bot_position) <= min_node_distance)
m_on_next_path_node->operator()(path[1]);
else
m_on_next_path_node->operator()(path.front());
}
} // namespace omath::pathfinding