diff --git a/r5dev/naveditor/Sample.cpp b/r5dev/naveditor/Sample.cpp
index cbcc9ae4..9157a3c1 100644
--- a/r5dev/naveditor/Sample.cpp
+++ b/r5dev/naveditor/Sample.cpp
@@ -343,7 +343,6 @@ struct NavMeshSetHeader
 	int version;
 	int numTiles;
 	dtNavMeshParams params;
-	int unk0 = 0;
 };
 
 struct NavMeshTileHeader
@@ -429,10 +428,10 @@ void unpatch_tiletf2(dtMeshTile* t)
 		coord_tf_unfix(t->offMeshCons[i].unk);
 	}
 }
-struct link_table_data
+struct LinkTableData
 {
 	//disjoint set algo from some crappy site because i'm too lazy to think
-	int set_count = 0;
+	int setCount = 0;
 	std::vector<int> rank;
 	std::vector<int> parent;
 	void init(int size)
@@ -446,8 +445,8 @@ struct link_table_data
 	int insert_new()
 	{
 		rank.push_back(0);
-		parent.push_back(set_count);
-		return set_count++;
+		parent.push_back(setCount);
+		return setCount++;
 	}
 	int find(int id)
 	{
@@ -473,7 +472,7 @@ struct link_table_data
 		}
 	}
 };
-void build_link_table(dtNavMesh* mesh, link_table_data& data)
+void build_link_table(dtNavMesh* mesh, LinkTableData& data)
 {
 	//clear all labels
 	for (int i = 0; i < mesh->getMaxTiles(); ++i)
diff --git a/r5dev/thirdparty/recast/Detour/Include/DetourNavMesh.h b/r5dev/thirdparty/recast/Detour/Include/DetourNavMesh.h
index c2919b7a..46a39f59 100644
--- a/r5dev/thirdparty/recast/Detour/Include/DetourNavMesh.h
+++ b/r5dev/thirdparty/recast/Detour/Include/DetourNavMesh.h
@@ -302,7 +302,7 @@ struct dtMeshTile
 	unsigned int linksFreeList;			///Index to the next free link.
 	dtMeshHeader* header;				///The tile header.
 	dtPoly* polys;						///The tile polygons. [Size: dtMeshHeader::polyCount]
-	void* unk0;
+	void* polysEnd;						///The tile polygons array end pointer.
 	float* verts;						///The tile vertices. [Size: dtMeshHeader::vertCount]
 	dtLink* links;						///The tile links. [Size: dtMeshHeader::maxLinkCount]
 	dtPolyDetail* detailMeshes;			///The tile's detail sub-meshes. [Size: dtMeshHeader::detailMeshCount]
@@ -357,6 +357,7 @@ struct dtNavMeshParams
 	int disjoint_poly_group_count = 0;
 	int reachability_table_size = 0;
 	int reachability_table_count = 0;
+	int unk0 = 0;
 };
 
 #pragma pack(push, 4)
@@ -687,32 +688,29 @@ public:
 	/// Returns closest point on polygon.
 	void closestPointOnPoly(dtPolyRef ref, const float* pos, float* closest, bool* posOverPoly) const;
 
-	dtMeshTile** m_posLookup;
-	dtMeshTile* m_nextFree;
-	dtMeshTile* m_tiles;
+	dtMeshTile** m_posLookup;			///< Tile hash lookup.
+	dtMeshTile* m_nextFree;				///< Freelist of tiles.
+	dtMeshTile* m_tiles;				///< List of tiles.
+	void** m_setTables;					///< Array of set tables.
+	void* m_unk0;						///< FIXME: unknown structure pointer.
 
-	// im pretty sure these are in the wrong place but i'm not sure
-	// where they are supposed to go, so this is temp
-	dtNavMeshParams m_params;
-	float orig[3];
+	char m_meshFlags;	// Maybe.
+	char m_tileFlags;	// Maybe.
+	int m_unk1;			// FIXME:
+
+	dtNavMeshParams m_params;			///< Current initialization params. TODO: do not store this info twice.
+	float m_orig[3];					///< Origin of the tile (0,0)
+	float m_tileWidth, m_tileHeight;	///< Dimensions of each tile.
+	int m_tileCount;					///< Number of tiles in the mesh.
+	int m_maxTiles;						///< Max number of tiles.
+	int m_tileLutSize;					///< Tile hash lookup size (must be pot).
+	int m_tileLutMask;					///< Tile hash lookup mask.
 
-	int unk0;
-	int unk1;
-	int unk2;
-	int unk3;
-	float m_orig[3];
-	float m_tileWidth;
-	float m_tileHeight;
-	int m_tileCount;
-	int m_maxTiles;
-	int m_tileLutSize;
-	int m_tileLutMask;
 #ifndef DT_POLYREF64
 	unsigned int m_saltBits;			///< Number of salt bits in the tile ID.
 	unsigned int m_tileBits;			///< Number of tile bits in the tile ID.
 	unsigned int m_polyBits;			///< Number of poly bits in the tile ID.
 #endif
-	int unk8;
 	friend class dtNavMeshQuery;
 };
 #pragma pack(pop)