Advertisement
DragRacer31

Leaked perlin noise script from BLOX survival

Sep 18th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.51 KB | None | 0 0
  1. -- Globals
  2. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  3.  
  4. -- Libraries
  5. local Class = require(ReplicatedStorage.Libraries.Class)
  6. local Arrays = require(ReplicatedStorage.Libraries.Arrays)
  7.  
  8. -- Modules
  9. local NoiseGeneratorPerlin = require(script.NoiseGeneratorPerlin)
  10.  
  11. --[[
  12.     NoiseGeneratorOctaves
  13.     Type: Class module
  14.    
  15.     Provides a simple interface for seeded perlin octaves.
  16. --]]
  17.  
  18. local NoiseGeneratorOctaves = Class()
  19.  
  20. --[[
  21.     Called to initialise a new module.
  22. --]]
  23. function NoiseGeneratorOctaves:constructor(random, numOctaves)
  24.     self.numOctaves = numOctaves
  25.     self.generators = {}
  26.     for octave=1, self.numOctaves do
  27.         self.generators[octave] = NoiseGeneratorPerlin.new(random)
  28.     end
  29. end
  30.  
  31.  
  32. --[[
  33.     Returns a sample of noise at the given location in 3D space.
  34. --]]
  35. function NoiseGeneratorOctaves:sample(x, y, z, xScale, yScale, zScale)
  36.     x = x / xScale
  37.     y = y / yScale
  38.     z = z / zScale
  39.    
  40.     local total = 0
  41.     local scale = 0
  42.     local frequency = 1
  43.     for octave=1, self.numOctaves do
  44.         total = total + self.generators[octave]:sample(x * frequency, y * frequency, z * frequency) / frequency
  45.         scale = scale + 1/frequency
  46.         frequency = frequency * 2
  47.     end
  48.     return total / scale
  49. end
  50.  
  51. --[[
  52.     Returns a sample of noise at the given location in 2D space.
  53. --]]
  54. function NoiseGeneratorOctaves:sample2D(x, z, xScale, zScale)
  55.     return self:sample(x, 0, z, xScale, 1, zScale)
  56. end
  57.  
  58.  
  59. return NoiseGeneratorOctaves
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement