Start laying out stuff for our noise experiment, but it isn't hooked up yet and isn't finished.

This commit is contained in:
Starbeamrainbowlabs 2021-03-01 21:26:33 +00:00
parent e9e7df73b2
commit 108c280843
Signed by: sbrl
GPG Key ID: 1BE5172E637709C2
4 changed files with 53 additions and 0 deletions

View File

@ -0,0 +1,3 @@
function worldeditadditions.noise.engine_perlin_2d(x, y)
end

View File

@ -0,0 +1,9 @@
-- ███ ███ █████ ██ ██ ███████ ██████ ██████
-- ████ ████ ██ ██ ██ ██ ██ ██ ██ ██
-- ██ ████ ██ ███████ █████ █████ █████ ██ ██
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
-- ██ ██ ██ ██ ██ ██ ███████ ███████ ███████ ██████
function worldeditadditions.noise.make_2d(size, noise_func)
-- TODO: Follow https://www.redblobgames.com/maps/terrain-from-noise/
end

View File

@ -0,0 +1,3 @@
worldeditadditions.noise = {}
dofile(worldeditadditions.modpath.."/lib/noise/alg_perlin.lua")

View File

@ -0,0 +1,38 @@
--- Applies a layer of 2D noise over the terrain in the defined region.
-- @module worldeditadditions.noise2d
-- ███ ██ ██████ ██ ███████ ███████ ██████ ██████
-- ████ ██ ██ ██ ██ ██ ██ ██ ██ ██
-- ██ ██ ██ ██ ██ ██ ███████ █████ █████ ██ ██
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
-- ██ ████ ██████ ██ ███████ ███████ ███████ ██████
--- Applies a layer of 2d noise over the terrain in the defined region.
-- @param pos1 Vector pos1 of the defined region
-- @param pos2 Vector pos2 of the defined region
-- @param noise_params table A noise parameters table. Will be passed unmodified to PerlinNoise() from the Minetest API.
function worldeditadditions.noise2d(pos1, pos2, noise_params)
pos1, pos2 = worldedit.sort_pos(pos1, pos2)
-- pos2 will always have the highest co-ordinates now
-- Fetch the nodes in the specified area
local manip, area = worldedit.manip_helpers.init(pos1, pos2)
local data = manip:get_data()
local heightmap_old, heightmap_size = worldeditadditions.make_heightmap(
pos1, pos2,
manip, area,
data
)
local heightmap_new = worldeditadditions.shallowcopy(heightmap_old)
local perlin_map = PerlinNoiseMap(noise_params, heightmap_size)
local stats = { added = 0, removed = 0 }
-- Save the modified nodes back to disk & return
-- No need to save - this function doesn't actually change anything
worldedit.manip_helpers.finish(manip, data)
return true, stats
end