Working, but...
This commit is contained in:
parent
0c042c79d7
commit
b1edaf6fc1
20 changed files with 807 additions and 0 deletions
54
world_objects/chunk.py
Normal file
54
world_objects/chunk.py
Normal file
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from settings import *
|
||||
from mesh.chunk import ChunkMesh
|
||||
|
||||
|
||||
class Chunk:
|
||||
def __init__(self, world, position):
|
||||
self.app = world.app
|
||||
self.world = world
|
||||
self.position = position
|
||||
self.m_model = self.get_model_matrix()
|
||||
self.voxels: numpy.array = None
|
||||
self.mesh: ChunkMesh = None
|
||||
self.is_empty = True
|
||||
|
||||
def get_model_matrix(self):
|
||||
m_model = glm.translate(glm.mat4(), glm.vec3(self.position) * CHUNK_SIZE)
|
||||
return m_model
|
||||
|
||||
def set_uniform(self):
|
||||
self.mesh.program["m_model"].write(self.m_model)
|
||||
|
||||
def build_mesh(self):
|
||||
self.mesh = ChunkMesh(self)
|
||||
|
||||
def render(self):
|
||||
self.set_uniform()
|
||||
self.mesh.render()
|
||||
|
||||
def build_voxels(self):
|
||||
# empty chunk
|
||||
voxels = numpy.zeros(CHUNK_VOL, dtype="uint8")
|
||||
|
||||
# fill chunk
|
||||
cx, cy, cz = glm.ivec3(self.position) * CHUNK_SIZE
|
||||
|
||||
# fill chunk
|
||||
for x in range(CHUNK_SIZE):
|
||||
for z in range(CHUNK_SIZE):
|
||||
wx = x + cx
|
||||
wz = z + cz
|
||||
world_height = int(glm.simplex(glm.vec2(wx, wz) * 0.01) * 32 + 32)
|
||||
local_height = min(world_height - cy, CHUNK_SIZE)
|
||||
|
||||
for y in range(local_height):
|
||||
wy = y + cy
|
||||
|
||||
voxels[x + CHUNK_SIZE * z + CHUNK_AREA * y] = wy + 1
|
||||
|
||||
if numpy.any(voxels):
|
||||
self.is_empty = False
|
||||
|
||||
return voxels
|
Loading…
Add table
Add a link
Reference in a new issue