HPC_Voxel_Engine 0.2.0
High-Performance C++ Voxel Engine
Loading...
Searching...
No Matches
RegionManager.h
Go to the documentation of this file.
1#pragma once
2
3#include <filesystem>
4#include <fstream>
5#include <mutex>
6#include <string>
7#include <unordered_map>
8#include <vector>
9#include "Chunk.h"
10
11// Region File Format Constants
12// 32x32 Chunks per Region File
13#define REGION_WIDTH 32
14#define REGION_SIZE 5 // 2^5 = 32
15#define REGION_MASK 31 // 0x1F
16#define REGION_AREA (REGION_WIDTH * REGION_WIDTH)
17#define HEADER_SIZE (REGION_AREA * 4) // 4 Bytes (int) per chunk offset
18
20public:
21 RegionManager(const std::string& strWorldDir);
23
24 bool SaveChunk(const Chunk& objChunk);
25 bool LoadChunk(Chunk& objChunk);
26
27private:
28 std::string m_strWorldDir;
29
30 // Cache open file handles to avoid opening/closing files constantly
31 std::unordered_map<std::string, std::fstream*> m_mapOpenFiles;
32 std::mutex m_mutexIO;
33
34 std::string getRegionFileName(int iChunkX, int iChunkZ) const;
35
36 // Gets or creates a file stream for the specific region
37 std::fstream* getRegionFile(int iChunkX, int iChunkZ);
38
39 std::pair<int, int> getRegionCoords(int iChunkX, int iChunkZ) const {
40 return {iChunkX >> REGION_SIZE, iChunkZ >> REGION_SIZE};
41 }
42};
Defines the Chunk class representing a localized 3D grid of voxels and its thermal data.
#define REGION_SIZE
Definition RegionManager.h:14
Manages voxel block data, procedural mesh generation, and memory-aligned thermal diffusion buffers.
Definition Chunk.h:39
Definition RegionManager.h:19
bool LoadChunk(Chunk &objChunk)
Definition RegionManager.cpp:105
std::fstream * getRegionFile(int iChunkX, int iChunkZ)
Definition RegionManager.cpp:29
std::mutex m_mutexIO
Definition RegionManager.h:32
std::string m_strWorldDir
Definition RegionManager.h:28
~RegionManager()
Definition RegionManager.cpp:11
std::unordered_map< std::string, std::fstream * > m_mapOpenFiles
Definition RegionManager.h:31
std::string getRegionFileName(int iChunkX, int iChunkZ) const
Definition RegionManager.cpp:23
bool SaveChunk(const Chunk &objChunk)
Definition RegionManager.cpp:74
std::pair< int, int > getRegionCoords(int iChunkX, int iChunkZ) const
Definition RegionManager.h:39