42 lines
779 B
C++
42 lines
779 B
C++
#pragma once
|
|
#include "DeerCore/Tools/Memory.h"
|
|
#include "DeerCore/Tools/TypeDefs.h"
|
|
|
|
#include <string>
|
|
#include <unordered_map>
|
|
#include <vector>
|
|
|
|
#define CLUSTER_SIZE 16
|
|
|
|
#ifdef DEER_RENDER
|
|
#include "DeerRender/Resource.h"
|
|
namespace Deer {
|
|
class VoxelBuilder;
|
|
class GPUMesh;
|
|
} // namespace Deer
|
|
#endif
|
|
|
|
namespace Deer {
|
|
class VoxelWorldData;
|
|
|
|
struct VoxelType {
|
|
std::string id;
|
|
};
|
|
|
|
class VoxelEnvironment {
|
|
public:
|
|
VoxelEnvironment();
|
|
~VoxelEnvironment();
|
|
|
|
void modifyVoxel(uint32_t voxelId, int x, int y, int z);
|
|
uint32_t getVoxel(int x, int y, int z);
|
|
|
|
#ifdef DEER_RENDER
|
|
public:
|
|
Resource<GPUMesh> buildCluster(int x, int y, int z);
|
|
Scope<VoxelBuilder> voxelBuilder;
|
|
#endif
|
|
private:
|
|
Scope<VoxelWorldData> voxelWorldData;
|
|
};
|
|
} // namespace Deer
|