mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-07 12:54:00 +00:00
39c0ce9ddf
When distance between start and end point is greater than max radius of area possibly covered by navmesh there is no way to find path via navmesh. Also if distance is greater than cell size navmesh might not exists withing mentioned area because cell is not loaded therefore navmesh is not generated. So minumum of these values is used to limit max path distance. Assuming that path actually exists it's possible to build path to the edge of a circle. When actor reaches initial edge path is built further. However it will not be optimal.
107 lines
3.0 KiB
C++
107 lines
3.0 KiB
C++
#ifndef OPENMW_COMPONENTS_DETOURNAVIGATOR_NAVIGATORSTUB_H
|
|
#define OPENMW_COMPONENTS_DETOURNAVIGATOR_NAVIGATORSTUB_H
|
|
|
|
#include "navigator.hpp"
|
|
|
|
namespace DetourNavigator
|
|
{
|
|
class NavigatorStub final : public Navigator
|
|
{
|
|
public:
|
|
NavigatorStub() = default;
|
|
|
|
void addAgent(const osg::Vec3f& /*agentHalfExtents*/) override {}
|
|
|
|
void removeAgent(const osg::Vec3f& /*agentHalfExtents*/) override {}
|
|
|
|
bool addObject(const ObjectId /*id*/, const btCollisionShape& /*shape*/, const btTransform& /*transform*/) override
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool addObject(const ObjectId /*id*/, const ObjectShapes& /*shapes*/, const btTransform& /*transform*/) override
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool addObject(const ObjectId /*id*/, const DoorShapes& /*shapes*/, const btTransform& /*transform*/) override
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool updateObject(const ObjectId /*id*/, const btCollisionShape& /*shape*/, const btTransform& /*transform*/) override
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool updateObject(const ObjectId /*id*/, const ObjectShapes& /*shapes*/, const btTransform& /*transform*/) override
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool updateObject(const ObjectId /*id*/, const DoorShapes& /*shapes*/, const btTransform& /*transform*/) override
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool removeObject(const ObjectId /*id*/) override
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool addWater(const osg::Vec2i& /*cellPosition*/, const int /*cellSize*/, const btScalar /*level*/,
|
|
const btTransform& /*transform*/) override
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool removeWater(const osg::Vec2i& /*cellPosition*/) override
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void addPathgrid(const ESM::Cell& /*cell*/, const ESM::Pathgrid& /*pathgrid*/) override {}
|
|
|
|
void removePathgrid(const ESM::Pathgrid& /*pathgrid*/) override {}
|
|
|
|
void update(const osg::Vec3f& /*playerPosition*/) override {}
|
|
|
|
void setUpdatesEnabled(bool /*enabled*/) override {}
|
|
|
|
void wait() override {}
|
|
|
|
SharedNavMeshCacheItem getNavMesh(const osg::Vec3f& /*agentHalfExtents*/) const override
|
|
{
|
|
return mEmptyNavMeshCacheItem;
|
|
}
|
|
|
|
std::map<osg::Vec3f, SharedNavMeshCacheItem> getNavMeshes() const override
|
|
{
|
|
return std::map<osg::Vec3f, SharedNavMeshCacheItem>();
|
|
}
|
|
|
|
const Settings& getSettings() const override
|
|
{
|
|
return mDefaultSettings;
|
|
}
|
|
|
|
void reportStats(unsigned int /*frameNumber*/, osg::Stats& /*stats*/) const override {}
|
|
|
|
RecastMeshTiles getRecastMeshTiles() override
|
|
{
|
|
return {};
|
|
}
|
|
|
|
float getMaxNavmeshAreaRealRadius() const override
|
|
{
|
|
return std::numeric_limits<float>::max();
|
|
}
|
|
|
|
private:
|
|
Settings mDefaultSettings {};
|
|
SharedNavMeshCacheItem mEmptyNavMeshCacheItem;
|
|
};
|
|
}
|
|
|
|
#endif
|