载入中...
搜索中...
未找到
VoxelPack.h
浏览该文件的文档.
1#pragma once
2
3#include <cstdint>
4
5namespace eve::voxel {
6
8constexpr int kChunkSize = 32;
9
22struct PackedRect {
23 uint32_t bits = 0;
24
26 static PackedRect pack(int x, int y, int z, int width, int height, int tex) {
28 r.bits = (uint32_t(x) & 31u) | ((uint32_t(y) & 31u) << 5) | ((uint32_t(z) & 31u) << 10) |
29 ((uint32_t(width - 1) & 31u) << 15) | ((uint32_t(height - 1) & 31u) << 20) |
30 ((uint32_t(tex) & 127u) << 25);
31 return r;
32 }
33
35 int x() const { return int(bits & 31u); }
37 int y() const { return int((bits >> 5) & 31u); }
39 int z() const { return int((bits >> 10) & 31u); }
41 int width() const { return int((bits >> 15) & 31u) + 1; }
43 int height() const { return int((bits >> 20) & 31u) + 1; }
45 int tex() const { return int((bits >> 25) & 127u); }
46};
47
48static_assert(sizeof(PackedRect) == 4, "PackedRect must be 32-bit");
49
50} // namespace eve::voxel
double r
方块类型定义:名字、各面图集纹理、方向性、组合声明。 方向性方块在注册时按 orientation 绕 Y 轴展开成多个"具体类型"变体, 每个变体持有旋转后的各面纹理;渲染端只消费纹理 id,不接触 ...
Definition Chunk.h:12
constexpr int kChunkSize
Chunk edge length in voxels (fixed).
Definition VoxelPack.h:8
Packed face-rectangle instance (exactly 32 bits): bits 0..4 : x (0..31) bits 5..9 : y (0....
Definition VoxelPack.h:22
int y() const
Y.
Definition VoxelPack.h:37
int z() const
Z.
Definition VoxelPack.h:39
int tex() const
Tex.
Definition VoxelPack.h:45
int width() const
Width.
Definition VoxelPack.h:41
int height() const
Height.
Definition VoxelPack.h:43
static PackedRect pack(int x, int y, int z, int width, int height, int tex)
Pack.
Definition VoxelPack.h:26
int x() const
X.
Definition VoxelPack.h:35