mirror of
https://github.com/sbrl/Minetest-WorldEditAdditions.git
synced 2024-11-22 07:23:00 +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