Bmorr

mapping.lua

May 5th, 2023 (edited)
1,065
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.88 KB | None | 0 0
  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
Comments
  • theunknown01
    2 years
    # text 3.88 KB | 0 0
    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}
Add Comment
Please, Sign In to add comment