Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Globals
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- -- Libraries
- local Class = require(ReplicatedStorage.Libraries.Class)
- local Arrays = require(ReplicatedStorage.Libraries.Arrays)
- -- Modules
- local NoiseGeneratorPerlin = require(script.NoiseGeneratorPerlin)
- --[[
- NoiseGeneratorOctaves
- Type: Class module
- Provides a simple interface for seeded perlin octaves.
- --]]
- local NoiseGeneratorOctaves = Class()
- --[[
- Called to initialise a new module.
- --]]
- function NoiseGeneratorOctaves:constructor(random, numOctaves)
- self.numOctaves = numOctaves
- self.generators = {}
- for octave=1, self.numOctaves do
- self.generators[octave] = NoiseGeneratorPerlin.new(random)
- end
- end
- --[[
- Returns a sample of noise at the given location in 3D space.
- --]]
- function NoiseGeneratorOctaves:sample(x, y, z, xScale, yScale, zScale)
- x = x / xScale
- y = y / yScale
- z = z / zScale
- local total = 0
- local scale = 0
- local frequency = 1
- for octave=1, self.numOctaves do
- total = total + self.generators[octave]:sample(x * frequency, y * frequency, z * frequency) / frequency
- scale = scale + 1/frequency
- frequency = frequency * 2
- end
- return total / scale
- end
- --[[
- Returns a sample of noise at the given location in 2D space.
- --]]
- function NoiseGeneratorOctaves:sample2D(x, z, xScale, zScale)
- return self:sample(x, 0, z, xScale, 1, zScale)
- end
- return NoiseGeneratorOctaves
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement