#pragma once #include "RE/B/BSIntrusiveRefCounted.h" #include "RE/B/BSNavmeshGrid.h" #include "RE/B/BSTArray.h" #include "RE/B/BSTHashMap.h" #include "RE/B/BSTSmartPointer.h" #include "RE/N/NiPointer.h" namespace RE { class BSNavmeshClosedDoorInfo; class BSNavmeshCoverEdge; class BSNavmeshEdgeExtraInfo; class BSNavmeshInfo; class BSNavmeshObstacleData; class BSNavmeshObstacleUndoData; class BSNavmeshTriangle; class BSNavmeshTriangleDoorPortal; class BSNavmeshVertex; class BSNavmeshWaypoint; class BSPathingCell; class __declspec(novtable) BSNavmesh : public BSIntrusiveRefCounted // 008 { public: static constexpr auto RTTI{ RTTI::BSNavmesh }; static constexpr auto VTABLE{ VTABLE::BSNavmesh }; class DisabledLink { public: // members std::uint16_t triIndex; // 0 std::uint16_t adjTriIndex; // 2 std::int32_t edgeIndex; // 4 std::int32_t adjEdgeIndex; // 8 }; static_assert(sizeof(DisabledLink) == 0xC); virtual ~BSNavmesh(); // 00 // add virtual std::uint32_t QNavmeshID() const = 0; // 01 // members BSTArray vertices; // 010 BSTArray triangles; // 028 BSTArray extraEdgeInfo; // 040 BSTArray doorPortals; // 058 BSTArray closedDoors; // 070 BSTArray coverArray; // 088 BSTHashMap coverMap; // 0A0 BSNavmeshGrid meshGrid; // 0D0 BSTArray> obstacles; // 100 BSTHashMap>* triangleToObstacleMap; // 118 BSTArray obstaclePOVs; // 120 BSTHashMap*> precuts; // 138 BSTSet activePrecuts; // 168 BSTHashMap portalSwaps; // 198 BSTArray disabledLinks; // 1C8 BSTSmartPointer parentCell; // 1E0 BSNavmeshInfo* navmeshInfo; // 1E8 BSTArray waypoints; // 1F0 }; static_assert(sizeof(BSNavmesh) == 0x208); }