1 local ChunkMesh = Dragonblocks.create_class()
2 table.assign(ChunkMesh, RenderEngine.Mesh)
4 function ChunkMesh:create_faces(blocks)
7 self.vertex_blob_size = 6
8 local face_orientations = {
17 for _, block in pairs(blocks) do
18 for i, dir in ipairs(face_orientations) do
20 local dir_pos_hash = WorldSystem.Chunk.get_pos_hash(pos + dir)
21 if not dir_pos_hash or not blocks[dir_pos_hash] then
22 table.insert(self.textures, block.def.texture)
23 self:add_face(block.pos - glm.vec3(7.5, 7.5, 7.5), i)
32 self:apply_vertices(self.vertices)
35 function ChunkMesh:add_face(pos, facenr)
36 local cube_vertices = RenderEngine.cube_vertices
37 local pos_modifier = {pos.x, pos.y, pos.z}
38 local offset = (facenr - 1) * 6
39 for vertex_index = offset, offset + 5 do
40 for attribute_index = 1, 5 do
41 local k = vertex_index * 5 + attribute_index
42 local v = cube_vertices[k]
43 if attribute_index <= 3 then
44 v = v + pos_modifier[attribute_index]
46 table.insert(self.vertices, v)