载入中...
搜索中...
未找到
VoxelWorld.cpp
浏览该文件的文档.
19void VoxelWorld::setTerrainParams(uint32_t seed, uint8_t top, uint8_t sub, uint8_t stone, float baseHeight,
353void VoxelWorld::drawVisible(graphics::IGraphics3D *gfx, graphics::Texture *atlas, int tilesPerRow) {
498void VoxelWorld::setVoxelByName(int wx, int wy, int wz, const std::string &name, int orientation) {
In-memory byte buffer implementing eve::Data (ref-counted).
Definition ByteData.h:11
void * getData() const override
Gets a pointer to the data. This pointer will obviously not be valid if the Data object is destroyed.
Definition ByteData.cpp:47
3D frame / mesh / light / shadow rendering surface.
Definition IGraphics3D.h:28
virtual void drawVoxelFaceInstances(const uint32_t *packed, int count, float originX, float originY, float originZ, const std::string &faceDir, Texture *atlas, int tilesPerRow=16, const uint32_t *ao=nullptr)=0
GPU texture created via Graphics::newTexture. Owns GPU resources through an opaque backend handle.
Definition Texture.h:17
One 32³ voxel chunk with six direction-sorted packed-rect instance buffers. Coordinates: chunk (cx,...
Definition Chunk.h:18
const uint32_t * faceAOPackedData(FaceDir dir) const
Definition Chunk.h:103
void ensureMeshed(const CubeTypeRegistry &types=CubeTypeRegistry::empty(), ChunkSampler sampler=nullptr, void *samplerUserData=nullptr)
Ensure mesh is up to date; remesh if dirty.
Definition Chunk.h:82
void worldAABB(float &minX, float &minY, float &minZ, float &maxX, float &maxY, float &maxZ) const
Definition Chunk.h:32
const uint32_t * facePackedData(FaceDir dir) const
Definition Chunk.h:94
const CubeType * find(const std::string &name) const
按名字返回 0 度变体;未找到返回 nullptr。
Definition CubeTypeRegistry.cpp:98
uint8_t variantId(const std::string &name, int orientation) const
名字 + orientation(0..3) 对应的具体类型 id;非方向性类型忽略 orientation。
Definition CubeTypeRegistry.cpp:109
data::ByteData * saveWorld() const
Script-facing wrappers around serialize/deserialize.
Definition VoxelWorld.cpp:222
int terrainHeightAt(int wx, int wz) const
Terrain height (world blocks) at a column for the configured seed.
Definition VoxelWorld.cpp:35
StreamStats streamAround(int centerX, int centerY, int centerZ, int radiusChunks, const std::function< void(Chunk &, int, int, int)> &generator={})
Player-centered streaming: evict chunks outside radiusChunks, then allocate + fill + mesh missing chu...
Definition VoxelWorld.cpp:101
void setVoxelByName(int wx, int wy, int wz, const std::string &name, int orientation=0)
按方块名 + orientation(0..3) 设置体素;内部解析为具体类型 id 后写 Chunk。 未注册的名字按空气(0)处理。
Definition VoxelWorld.cpp:498
void setTerrainParams(uint32_t seed, uint8_t top, uint8_t sub, uint8_t stone, float baseHeight, float amplitude, float scale)
Configure the built-in terrain generator used by streamAround(). The sampling itself lives in procgen...
Definition VoxelWorld.cpp:19
uint8_t getCubeTypeTex(int wx, int wy, int wz, const std::string &faceDir) const
该体素在某面方向上的纹理 id(faceDir 如 "posX"/"+y"/"negZ")。
Definition VoxelWorld.cpp:510
uint8_t getVoxel(int wx, int wy, int wz) const
World-space voxel get/set. Air (0) never allocates a chunk; a border edit also invalidates the adjace...
Definition VoxelWorld.cpp:363
~VoxelWorld()
Chunk * getOrCreateChunk(int cx, int cy, int cz)
Definition VoxelWorld.cpp:47
bool raycast(float ox, float oy, float oz, float dx, float dy, float dz, float maxDist, int &hitX, int &hitY, int &hitZ, int &prevX, int &prevY, int &prevZ, int &faceX, int &faceY, int &faceZ) const
Voxel raycast (Amanatides & Woo DDA). Returns true when a solid voxel is found within maxDist world u...
Definition VoxelWorld.cpp:413
bool deserializeWorld(const uint8_t *data, size_t size)
Definition VoxelWorld.cpp:200
void drawVisible(graphics::IGraphics3D *gfx, graphics::Texture *atlas, int tilesPerRow=16)
Issue Graphics::drawVoxelFaceInstances for every visible batch. Requires begin3DFrame + setMesh3DView...
Definition VoxelWorld.cpp:353
void setVoxel(int wx, int wy, int wz, uint8_t texId)
Definition VoxelWorld.cpp:372
VoxelWorld()=default
bool raycastScript(float ox, float oy, float oz, float dx, float dy, float dz, float maxDist)
Script-facing raycast: stores the last result, returns hit/miss.
Definition VoxelWorld.cpp:490
std::string getCubeTypeName(int wx, int wy, int wz) const
该体素所属方块类型名(未注册或空气返回空串)。
Definition VoxelWorld.cpp:505
void selectVisible(const float *viewProj16, float eyeX, float eyeY, float eyeZ, float viewRange, bool faceCull=true)
Select chunks/faces to draw.
Definition VoxelWorld.cpp:281
void removeChunk(int cx, int cy, int cz)
Definition VoxelWorld.cpp:71
Chunk * getChunk(int cx, int cy, int cz)
Definition VoxelWorld.cpp:57
void getVisibleChunkCoord(int index, int &cx, int &cy, int &cz) const
Definition VoxelWorld.cpp:339
bool hasChunk(int cx, int cy, int cz) const
Definition VoxelWorld.cpp:67
int getVisibleRectCount() const
Definition VoxelWorld.cpp:347
int unloadChunksOutside(int centerX, int centerY, int centerZ, int radiusChunks)
Streaming eviction: drop chunks whose center is farther than radiusChunks chunk units from (centerX,...
Definition VoxelWorld.cpp:79
int remeshDirty(int maxThreads=0)
Remesh every dirty chunk. Returns number remeshed.
Definition VoxelWorld.cpp:233
void serializeWorld(std::vector< uint8_t > &out) const
Persistence: serialize every chunk (coords + raw voxels) into out. Format is portable little-endian: ...
Definition VoxelWorld.cpp:176
方块类型定义:名字、各面图集纹理、方向性、组合声明。 方向性方块在注册时按 orientation 绕 Y 轴展开成多个"具体类型"变体, 每个变体持有旋转后的各面纹理;渲染端只消费纹理 id,不接触 ...
Definition Chunk.h:12
void faceNormal(FaceDir d, float &nx, float &ny, float &nz)
Outward unit normal for the face.
Definition FaceDir.h:85
uint8_t resolveFaceTex(const CubeTypeRegistry &types, uint8_t id, FaceDir dir)
求某个体素在某面方向上的实际图集纹理 id。 未注册的 id 退化为“所有面 = 原 id”(向后兼容:体素值即纹理 id)。
Definition CubeTypeRegistry.h:66
bool faceDirFromName(const std::string &name, FaceDir &out)
Definition FaceDir.h:41
FaceDir
Six axis-aligned face directions. Each chunk keeps a separate instance buffer per direction so camera...
Definition FaceDir.h:17
Definition CubeType.h:14
One draw batch: all packed rects of one face direction for one chunk.
Definition VoxelWorld.h:39
Six frustum planes in ax+by+cz+d >= 0 form (normals point inward).
Definition Frustum.h:8
static Frustum fromViewProjColumnMajor(const float *m16)
Extract from a column-major 4x4 view-projection matrix (RH + Vulkan ZO). Layout matches glm::mat4 mem...
Definition Frustum.h:15