mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-07 03:40:15 +00:00
Merge branch 'navigator_debug' into 'master'
Navigator debugging and logging See merge request OpenMW/openmw!3122
This commit is contained in:
commit
613003e1c7
@ -38,9 +38,8 @@ namespace testing
|
||||
template <>
|
||||
inline testing::Message& Message::operator<<(const osg::Vec3f& value)
|
||||
{
|
||||
return (*this) << "Vec3fEq(" << std::setprecision(std::numeric_limits<float>::max_exponent10) << value.x()
|
||||
<< ", " << std::setprecision(std::numeric_limits<float>::max_exponent10) << value.y() << ", "
|
||||
<< std::setprecision(std::numeric_limits<float>::max_exponent10) << value.z() << ')';
|
||||
return (*this) << std::setprecision(std::numeric_limits<float>::max_exponent10) << "Vec3fEq(" << value.x()
|
||||
<< ", " << value.y() << ", " << value.z() << ')';
|
||||
}
|
||||
|
||||
template <>
|
||||
|
@ -433,8 +433,8 @@ namespace DetourNavigator
|
||||
return JobStatus::MemoryCacheMiss;
|
||||
}
|
||||
|
||||
preparedNavMeshData
|
||||
= prepareNavMeshTileData(*recastMesh, job.mChangedTile, job.mAgentBounds, mSettings.get().mRecast);
|
||||
preparedNavMeshData = prepareNavMeshTileData(
|
||||
*recastMesh, job.mWorldspace, job.mChangedTile, job.mAgentBounds, mSettings.get().mRecast);
|
||||
|
||||
if (preparedNavMeshData == nullptr)
|
||||
{
|
||||
@ -483,8 +483,8 @@ namespace DetourNavigator
|
||||
|
||||
if (preparedNavMeshData == nullptr)
|
||||
{
|
||||
preparedNavMeshData
|
||||
= prepareNavMeshTileData(*job.mRecastMesh, job.mChangedTile, job.mAgentBounds, mSettings.get().mRecast);
|
||||
preparedNavMeshData = prepareNavMeshTileData(
|
||||
*job.mRecastMesh, job.mWorldspace, job.mChangedTile, job.mAgentBounds, mSettings.get().mRecast);
|
||||
generatedNavMeshData = true;
|
||||
}
|
||||
|
||||
|
@ -114,9 +114,17 @@ namespace DetourNavigator
|
||||
|
||||
std::ostream& operator<<(std::ostream& stream, const WriteDtStatus& value)
|
||||
{
|
||||
for (const auto& status : dtStatuses)
|
||||
if (value.mStatus & status.mStatus)
|
||||
stream << status.mString;
|
||||
bool first = true;
|
||||
for (const auto& v : dtStatuses)
|
||||
{
|
||||
if ((value.mStatus & v.mStatus) == 0)
|
||||
continue;
|
||||
if (first)
|
||||
first = false;
|
||||
else
|
||||
stream << " | ";
|
||||
stream << v.mString;
|
||||
}
|
||||
return stream;
|
||||
}
|
||||
|
||||
@ -207,6 +215,22 @@ namespace DetourNavigator
|
||||
return stream << "TilesPositionsRange {" << value.mBegin << ", " << value.mEnd << "}";
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& stream, const AreaCosts& value)
|
||||
{
|
||||
return stream << "AreaCosts {"
|
||||
<< ".mWater = " << value.mWater << ", .mDoor = " << value.mDoor
|
||||
<< ", .mPathgrid = " << value.mPathgrid << ", .mGround = " << value.mGround << "}";
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& stream, const DetourSettings& value)
|
||||
{
|
||||
return stream << "DetourSettings {"
|
||||
<< ".mMaxPolys = " << value.mMaxPolys
|
||||
<< ", .mMaxNavMeshQueryNodes = " << value.mMaxNavMeshQueryNodes
|
||||
<< ", .mMaxPolygonPathSize = " << value.mMaxPolygonPathSize
|
||||
<< ", .mMaxSmoothPathSize = " << value.mMaxSmoothPathSize << "}";
|
||||
}
|
||||
|
||||
void writeToFile(const RecastMesh& recastMesh, const std::string& pathPrefix, const std::string& revision,
|
||||
const RecastSettings& settings)
|
||||
{
|
||||
|
@ -20,6 +20,8 @@ namespace DetourNavigator
|
||||
{
|
||||
struct Version;
|
||||
struct TilesPositionsRange;
|
||||
struct AreaCosts;
|
||||
struct DetourSettings;
|
||||
|
||||
std::ostream& operator<<(std::ostream& stream, const TileBounds& value);
|
||||
|
||||
@ -61,6 +63,10 @@ namespace DetourNavigator
|
||||
|
||||
std::ostream& operator<<(std::ostream& stream, const TilesPositionsRange& value);
|
||||
|
||||
std::ostream& operator<<(std::ostream& stream, const AreaCosts& value);
|
||||
|
||||
std::ostream& operator<<(std::ostream& stream, const DetourSettings& value);
|
||||
|
||||
class RecastMesh;
|
||||
struct RecastSettings;
|
||||
|
||||
|
@ -79,7 +79,8 @@ namespace DetourNavigator
|
||||
return;
|
||||
}
|
||||
|
||||
const auto data = prepareNavMeshTileData(*recastMesh, mTilePosition, mAgentBounds, mSettings.mRecast);
|
||||
const auto data
|
||||
= prepareNavMeshTileData(*recastMesh, mWorldspace, mTilePosition, mAgentBounds, mSettings.mRecast);
|
||||
|
||||
if (data == nullptr)
|
||||
return;
|
||||
|
@ -517,9 +517,10 @@ namespace DetourNavigator
|
||||
namespace DetourNavigator
|
||||
{
|
||||
std::unique_ptr<PreparedNavMeshData> prepareNavMeshTileData(const RecastMesh& recastMesh,
|
||||
const TilePosition& tilePosition, const AgentBounds& agentBounds, const RecastSettings& settings)
|
||||
std::string_view worldspace, const TilePosition& tilePosition, const AgentBounds& agentBounds,
|
||||
const RecastSettings& settings)
|
||||
{
|
||||
RecastContext context(tilePosition, agentBounds);
|
||||
RecastContext context(worldspace, tilePosition, agentBounds);
|
||||
|
||||
const auto [minZ, maxZ] = getBoundsByZ(recastMesh, agentBounds.mHalfExtents.z(), settings);
|
||||
|
||||
|
@ -42,7 +42,8 @@ namespace DetourNavigator
|
||||
}
|
||||
|
||||
std::unique_ptr<PreparedNavMeshData> prepareNavMeshTileData(const RecastMesh& recastMesh,
|
||||
const TilePosition& tilePosition, const AgentBounds& agentBounds, const RecastSettings& settings);
|
||||
std::string_view worldspace, const TilePosition& tilePosition, const AgentBounds& agentBounds,
|
||||
const RecastSettings& settings);
|
||||
|
||||
NavMeshData makeNavMeshTileData(const PreparedNavMeshData& data,
|
||||
const std::vector<OffMeshConnection>& offMeshConnections, const AgentBounds& agentBounds,
|
||||
|
@ -23,17 +23,19 @@ namespace DetourNavigator
|
||||
return Debug::Debug;
|
||||
}
|
||||
|
||||
std::string formatPrefix(const TilePosition& tilePosition, const AgentBounds& agentBounds)
|
||||
std::string formatPrefix(
|
||||
std::string_view worldspace, const TilePosition& tilePosition, const AgentBounds& agentBounds)
|
||||
{
|
||||
std::ostringstream stream;
|
||||
stream << "Tile position: " << tilePosition.x() << ", " << tilePosition.y()
|
||||
<< "; agent bounds: " << agentBounds << "; ";
|
||||
stream << "Worldspace: " << worldspace << "; tile position: " << tilePosition.x() << ", "
|
||||
<< tilePosition.y() << "; agent bounds: " << agentBounds << "; ";
|
||||
return stream.str();
|
||||
}
|
||||
}
|
||||
|
||||
RecastContext::RecastContext(const TilePosition& tilePosition, const AgentBounds& agentBounds)
|
||||
: mPrefix(formatPrefix(tilePosition, agentBounds))
|
||||
RecastContext::RecastContext(
|
||||
std::string_view worldspace, const TilePosition& tilePosition, const AgentBounds& agentBounds)
|
||||
: mPrefix(formatPrefix(worldspace, tilePosition, agentBounds))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,8 @@ namespace DetourNavigator
|
||||
class RecastContext final : public rcContext
|
||||
{
|
||||
public:
|
||||
explicit RecastContext(const TilePosition& tilePosition, const AgentBounds& agentBounds);
|
||||
explicit RecastContext(
|
||||
std::string_view worldspace, const TilePosition& tilePosition, const AgentBounds& agentBounds);
|
||||
|
||||
const std::string& getPrefix() const { return mPrefix; }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user