mirror of
https://github.com/sbrl/Minetest-WorldEditAdditions.git
synced 2024-11-22 23:42:59 +00:00
Start laying out stuff for our noise experiment, but it isn't hooked up yet and isn't finished.
This commit is contained in:
parent
e9e7df73b2
commit
108c280843
4 changed files with 53 additions and 0 deletions
3
worldeditadditions/lib/noise/engines.lua
Normal file
3
worldeditadditions/lib/noise/engines.lua
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
function worldeditadditions.noise.engine_perlin_2d(x, y)
|
||||||
|
|
||||||
|
end
|
9
worldeditadditions/lib/noise/make_2d.lua
Normal file
9
worldeditadditions/lib/noise/make_2d.lua
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
-- ███ ███ █████ ██ ██ ███████ ██████ ██████
|
||||||
|
-- ████ ████ ██ ██ ██ ██ ██ ██ ██ ██
|
||||||
|
-- ██ ████ ██ ███████ █████ █████ █████ ██ ██
|
||||||
|
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||||
|
-- ██ ██ ██ ██ ██ ██ ███████ ███████ ███████ ██████
|
||||||
|
function worldeditadditions.noise.make_2d(size, noise_func)
|
||||||
|
-- TODO: Follow https://www.redblobgames.com/maps/terrain-from-noise/
|
||||||
|
end
|
3
worldeditadditions/lib/noise/noise.lua
Normal file
3
worldeditadditions/lib/noise/noise.lua
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
worldeditadditions.noise = {}
|
||||||
|
|
||||||
|
dofile(worldeditadditions.modpath.."/lib/noise/alg_perlin.lua")
|
38
worldeditadditions/lib/noise/noise2d.lua
Normal file
38
worldeditadditions/lib/noise/noise2d.lua
Normal 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
|
Loading…
Reference in a new issue