noise.lua 989 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. ww.perlins = ww.perlins or {}
  2. ww.maps = ww.maps or {}
  3. ww.noises = ww.noises or {}
  4. local maps = ww.maps
  5. local perlins = ww.perlins
  6. local noises = ww.noises
  7. function ww.create_2d_noise(which, data)
  8. local nk = which .. "_2d"
  9. noises[nk] = data
  10. end
  11. function ww.create_3d_noise(which, data)
  12. local nk = which .. "_3d"
  13. noises[nk] = data
  14. end
  15. function ww.get_2d_noise(pos, sides2D, which)
  16. local nk = which .. "_2d"
  17. local mk = which .. "_2d"
  18. local pk = which .. "_2d"
  19. local noisedata = noises[nk]
  20. perlins[pk] = perlins[pk] or minetest.get_perlin_map(noisedata, sides2D)
  21. maps[mk] = maps[mk] or {}
  22. perlins[pk]:get_2d_map_flat(pos, maps[mk])
  23. return maps[mk]
  24. end
  25. function ww.get_3d_noise(pos, sides3D, which)
  26. local nk = which .. "_3d"
  27. local mk = which .. "_3d"
  28. local pk = which .. "_3d"
  29. local noisedata = noises[nk]
  30. perlins[pk] = perlins[pk] or minetest.get_perlin_map(noisedata, sides3D)
  31. maps[mk] = maps[mk] or {}
  32. perlins[pk]:get_3d_map_flat(pos, maps[mk])
  33. return maps[mk]
  34. end