#pragma once #include "Singleton.h" //Navmesh includes: #include "Recast.h" #include "DetourNavMesh.h" #include "DetourNavMeshBuilder.h" #include "DetourNavMeshQuery.h" #include #include #include "dNavMesh.h" class NiPoint3; class dpEntity; class dpGrid; class dpWorld : public Singleton { public: void Initialize(unsigned int zoneID, bool generateNewNavMesh = true); void Reload(); ~dpWorld(); bool ShouldUseSP(unsigned int zoneID); bool IsLoaded() const { return m_NavMesh->GetdtNavMesh() != nullptr; } void StepWorld(float deltaTime); void AddEntity(dpEntity* entity); void RemoveEntity(dpEntity* entity); dNavMesh* GetNavMesh() { return m_NavMesh; } private: dpGrid* m_Grid; bool phys_spatial_partitioning = 1; int phys_sp_tilesize = 205; int phys_sp_tilecount = 12; std::vector m_StaticEntities; std::vector m_DynamicEntites; dNavMesh* m_NavMesh = nullptr; uint32_t m_ZoneID = 0; };