DarkflameServer/dPhysics/dpWorld.h
2022-12-04 16:25:58 -06:00

49 lines
965 B
C++

#pragma once
#include "Singleton.h"
//Navmesh includes:
#include "Recast.h"
#include "DetourNavMesh.h"
#include "DetourNavMeshBuilder.h"
#include "DetourNavMeshQuery.h"
#include <vector>
#include <map>
#include "dNavMesh.h"
class NiPoint3;
class dpEntity;
class dpGrid;
class dpWorld : public Singleton<dpWorld> {
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<dpEntity*> m_StaticEntities;
std::vector<dpEntity*> m_DynamicEntites;
dNavMesh* m_NavMesh = nullptr;
uint32_t m_ZoneID = 0;
};