theunknown01
May 6th, 2023
72
0
Never
This is comment for paste mapping.lua
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -[[
  2. pastebin get 3EjbHEPN mapping.lua
  3. ]]
  4.  
  5.  
  6. local Chunk = {
  7. new = function()
  8. local chunk = {
  9. voxels = {}
  10. }
  11. return chunk
  12. end
  13. }
  14.  
  15. local World = {
  16. new = function(chunkSize)
  17. local world = {
  18. chunkSize = chunkSize,
  19. chunks = {}
  20. }
  21. return world
  22. end,
  23.  
  24. setVoxel = function(world, x, y, z, value)
  25. local chunkX = math.floor(x / world.chunkSize)
  26. local chunkY = math.floor(y / world.chunkSize)
  27. local chunkZ = math.floor(z / world.chunkSize)
  28.  
  29. local chunkKey = string.format("%d,%d,%d", chunkX, chunkY, chunkZ)
  30.  
  31. -- Create the chunk if it doesn't exist
  32. if not world.chunks[chunkKey] then
  33. world.chunks[chunkKey] = Chunk.new()
  34. end
  35.  
  36. local chunk = world.chunks[chunkKey]
  37. local voxelX = x % world.chunkSize
  38. local voxelY = y % world.chunkSize
  39. local voxelZ = z % world.chunkSize
  40.  
  41. local voxelKey = string.format("%d,%d,%d", voxelX, voxelY, voxelZ)
  42. chunk.voxels[voxelKey] = value
  43. end,
  44.  
  45. getVoxel = function(world, x, y, z)
  46. local chunkX = math.floor(x / world.chunkSize)
  47. local chunkY = math.floor(y / world.chunkSize)
  48. local chunkZ = math.floor(z / world.chunkSize)
  49.  
  50. local chunkKey = string.format("%d,%d,%d", chunkX, chunkY, chunkZ)
  51. local chunk = world.chunks[chunkKey]
  52.  
  53. if chunk then
  54. local voxelX = x % world.chunkSize
  55. local voxelY = y % world.chunkSize
  56. local voxelZ = z % world.chunkSize
  57.  
  58. local voxelKey = string.format("%d,%d,%d", voxelX, voxelY, voxelZ)
  59. return chunk.voxels[voxelKey]
  60. end
  61.  
  62. return nil
  63. end,
  64.  
  65. getNode = function(world, node)
  66. local chunkX = math.floor(node.x / world.chunkSize)
  67. local chunkY = math.floor(node.y / world.chunkSize)
  68. local chunkZ = math.floor(node.z / world.chunkSize)
  69.  
  70. local chunkKey = string.format("%d,%d,%d", chunkX, chunkY, chunkZ)
  71.  
  72. -- Create the chunk if it doesn't exist
  73. if not world.chunks[chunkKey] then
  74. world.chunks[chunkKey] = Chunk.new()
  75. end
  76.  
  77. -- Get the chunk
  78. local chunk = world.chunks[chunkKey]
  79.  
  80. local voxelX = node.x % world.chunkSize
  81. local voxelY = node.y % world.chunkSize
  82. local voxelZ = node.z % world.chunkSize
  83.  
  84. local voxelKey = string.format("%d,%d,%d", voxelX, voxelY, voxelZ)
  85.  
  86. -- Create the node if it doesn't exist
  87. if not chunk.voxels[voxelKey] then
  88. chunk.voxels[voxelKey] = node
  89. end
  90.  
  91. -- Return the node
  92. return chunk.voxels[voxelKey]
  93. end,
  94.  
  95. setNode = function(world, node)
  96. local chunkX = math.floor(node.x / world.chunkSize)
  97. local chunkY = math.floor(node.y / world.chunkSize)
  98. local chunkZ = math.floor(node.z / world.chunkSize)
  99.  
  100. local chunkKey = string.format("%d,%d,%d", chunkX, chunkY, chunkZ)
  101.  
  102. -- Create the chunk if it doesn't exist
  103. if not world.chunks[chunkKey] then
  104. world.chunks[chunkKey] = Chunk.new()
  105. end
  106.  
  107. local chunk = world.chunks[chunkKey]
  108. local voxelX = node.x % world.chunkSize
  109. local voxelY = node.y % world.chunkSize
  110. local voxelZ = node.z % world.chunkSize
  111.  
  112. local voxelKey = string.format("%d,%d,%d", voxelX, voxelY, voxelZ)
  113. chunk.voxels[voxelKey] = node
  114. end
  115. }
  116.  
  117. function example()
  118. -- Example usage
  119. local world = World.new(16) -- Chunk size of 16
  120.  
  121. -- Set voxel at coordinates (5, 5, 5) to 1
  122. World.setVoxel(world, 5, 5, 5, 1)
  123.  
  124. -- Get voxel value at coordinates (5, 5, 5)
  125. local voxelValue = World.getVoxel(world, 5, 5, 5)
  126.  
  127. print(voxelValue) -- Output: 1
  128. end
  129.  
  130.  
  131. return {Chunk=Chunk, World=World, example=example}
Advertisement
Add Comment
Please, Sign In to add comment