19#include "../core/ThreadPool.h"
20#include "../core/ThreadSafeQueue.h"
44 void Update(
float fPlayerX,
float fPlayerZ);
51 void SetBlock(
int iWorldX,
int iWorldY,
int iWorldZ, uint8_t iBlockType);
68 const std::map<std::pair<int, int>, std::unique_ptr<Chunk>>&
GetChunks()
const {
93 std::map<std::pair<int, int>, std::unique_ptr<Chunk>>
m_mapChunks;
Defines the Chunk class representing a localized 3D grid of voxels and its thermal data.
Orchestrates infinite world generation, active chunk tracking, and multi-threaded data loading.
Definition ChunkManager.h:33
Core::ThreadPool m_objThreadPool
Definition ChunkManager.h:102
int m_iLastPlayerChunkX
Definition ChunkManager.h:105
size_t GetGeneratedVertCount() const
Definition ChunkManager.h:74
size_t m_iUploadedVertexCount
Definition ChunkManager.h:110
std::mutex m_mutexPending
Definition ChunkManager.h:96
void SetBlock(int iWorldX, int iWorldY, int iWorldZ, uint8_t iBlockType)
Modifies a voxel block and invalidates necessary chunk meshes (including boundaries).
Definition ChunkManager.cpp:123
size_t m_iGeneratedTriangleCount
Definition ChunkManager.h:109
const std::map< std::pair< int, int >, std::unique_ptr< Chunk > > & GetChunks() const
Definition ChunkManager.h:68
int m_iRenderDistance
Definition ChunkManager.h:104
void Update(float fPlayerX, float fPlayerZ)
Core lifecycle loop. Synchronizes asynchronous chunks and manages the active render radius.
Definition ChunkManager.cpp:10
std::map< std::pair< int, int >, std::unique_ptr< Chunk > > & GetMutableChunks()
Definition ChunkManager.h:64
bool m_bEnableNeighborCulling
Definition ChunkManager.h:112
Chunk * GetChunk(int iX, int iZ)
Retrieves a pointer to a loaded chunk. Returns nullptr if not loaded.
Definition ChunkManager.cpp:191
void updateGeneratedMeshStats()
Definition ChunkManager.cpp:100
void updateChunkNeighbours(Chunk *pChunk)
Definition ChunkManager.cpp:222
bool GetNeighborCulling() const
Definition ChunkManager.h:86
std::map< std::pair< int, int >, std::unique_ptr< Chunk > > m_mapChunks
Definition ChunkManager.h:93
size_t GetGeneratedTriaCount() const
Definition ChunkManager.h:75
void AddToUploadedVertCount(size_t iCt)
Definition ChunkManager.h:77
void ResetUploadedTriaCount()
Definition ChunkManager.h:82
int m_iActiveThreads
Definition ChunkManager.h:107
size_t GetUploadedTriaCount() const
Definition ChunkManager.h:83
size_t m_iUploadedTriangleCount
Definition ChunkManager.h:111
int m_iLastPlayerChunkZ
Definition ChunkManager.h:106
void AddToUploadedTriaCount(size_t iCt)
Definition ChunkManager.h:81
RegionManager m_objRegionManager
Definition ChunkManager.h:98
std::set< std::pair< int, int > > m_setPendingCoords
Definition ChunkManager.h:95
void SetNeighborCulling(bool bNeighborCulling)
Definition ChunkManager.h:85
ChunkManager(std::string &strFolderPath)
Definition ChunkManager.h:36
void SetActiveThreads(int iCt)
Definition ChunkManager.h:71
size_t m_iGeneratedVertexCount
Definition ChunkManager.h:108
int GetActiveThreads()
Definition ChunkManager.h:72
void enqueueLoadChunk(int iX, int iZ)
Definition ChunkManager.cpp:207
void ResetUploadedVertCount()
Definition ChunkManager.h:78
Core::ThreadSafeQueue< Chunk > m_objFinishedQueue
Definition ChunkManager.h:101
void ReloadAllChunks()
Definition ChunkManager.cpp:113
size_t GetUploadedVertCount() const
Definition ChunkManager.h:79
void SaveWorld()
Persists all active chunks to disk.
Definition ChunkManager.cpp:183
Manages voxel block data, procedural mesh generation, and memory-aligned thermal diffusion buffers.
Definition Chunk.h:39
Manages a pool of worker threads that consume tasks from a ThreadSafeQueue. Utilizes C++20 std::jthre...
Definition ThreadPool.h:17
A thread-safe FIFO queue wrapper using mutexes and condition variables. Designed for producer-consume...
Definition ThreadSafeQueue.h:17
Definition RegionManager.h:19