]> git.lizzy.rs Git - dragonblocks3d-lua.git/blob - modules/WorldSystem/src/chunk.lua
Huge Performance improvements
[dragonblocks3d-lua.git] / modules / WorldSystem / src / chunk.lua
1 local Chunk = Dragonblocks.create_class()
2
3 local size = 16
4 local size_squared = math.pow(size, 2)
5
6 function Chunk:constructor()
7         self.blocks = {}
8         MapGen:generate(self)
9         if Client then
10                 Client.graphics:create_chunk_meshes(self)
11         end
12 end
13
14 function Chunk:get_pos_hash(pos)
15         local x, y, z = pos.x, pos.y, pos.z
16         if x > 15 or y > 15 or z > 15 or x < 0 or y < 0 or z < 0 then return end
17         return x + size * y + size_squared * z
18 end
19
20 function Chunk:add_block(pos, def)
21         local block = WorldSystem.Block(def, pos)
22         self.blocks[self:get_pos_hash(pos)] = block
23 end
24
25 function Chunk:remove_block(pos)
26         self.blocks[self:get_pos_hash(pos)] = nil
27 end
28
29 function Chunk:get_block(pos)
30         return self.blocks[self:get_pos_hash(pos)]
31 end
32
33 return Chunk