From 2af1226b4918ef668d5249abc1a274e7aeee732d Mon Sep 17 00:00:00 2001 From: Starbeamrainbowlabs Date: Mon, 19 Sep 2022 01:16:22 +0100 Subject: [PATCH] port everything else phew! --- .../lib/compat/saplingnames.lua | 50 ++++++++++--------- worldeditadditions/lib/conv/conv.lua | 9 ++-- worldeditadditions/lib/conv/convolve.lua | 6 +-- .../lib/conv/kernel_gaussian.lua | 3 +- worldeditadditions/lib/erode/erode.lua | 11 ++-- worldeditadditions/lib/erode/river.lua | 17 ++++--- worldeditadditions/lib/erode/snowballs.lua | 33 ++++++------ .../lib/metaballs/playerdata.lua | 10 ++-- worldeditadditions/lib/metaballs/render.lua | 5 +- worldeditadditions/lib/noise/apply_2d.lua | 13 ++--- .../lib/noise/engines/infrared.lua | 4 +- .../lib/noise/engines/perlin.lua | 10 ++-- .../lib/noise/engines/perlinmt.lua | 5 +- worldeditadditions/lib/noise/engines/red.lua | 3 +- worldeditadditions/lib/noise/engines/sin.lua | 2 - .../lib/noise/engines/white.lua | 1 - worldeditadditions/lib/noise/make_2d.lua | 5 +- .../lib/noise/params_apply_default.lua | 10 ++-- worldeditadditions/lib/noise/run2d.lua | 17 ++++--- worldeditadditions/lib/sculpt/apply.lua | 9 ++-- .../lib/sculpt/apply_heightmap.lua | 5 +- .../lib/sculpt/brushes/__gaussian.lua | 12 +++-- .../lib/sculpt/brushes/circle.lua | 8 +-- .../lib/sculpt/brushes/circle_soft1.lua | 7 +-- .../lib/sculpt/import_static.lua | 4 +- worldeditadditions/lib/sculpt/init.lua | 1 - .../lib/sculpt/make_preview.lua | 1 - .../lib/sculpt/parse_static.lua | 11 ++-- .../lib/sculpt/preview_brush.lua | 3 +- .../lib/sculpt/read_brush_static.lua | 11 ---- worldeditadditions/lib/sculpt/scan_static.lua | 7 +-- .../lib/wireframe/corner_set.lua | 37 +++++++------- .../lib/wireframe/make_compass.lua | 11 ++-- worldeditadditions/lib/wireframe/wire_box.lua | 3 +- .../commands/convolve.lua | 2 +- 35 files changed, 186 insertions(+), 160 deletions(-) delete mode 100644 worldeditadditions/lib/sculpt/read_brush_static.lua diff --git a/worldeditadditions/lib/compat/saplingnames.lua b/worldeditadditions/lib/compat/saplingnames.lua index 937702d..39a0ff3 100644 --- a/worldeditadditions/lib/compat/saplingnames.lua +++ b/worldeditadditions/lib/compat/saplingnames.lua @@ -1,3 +1,4 @@ +local wea_c = worldeditadditions_core --[[ This file contains sapling alias definitions for a number of different mods. If your mod is not listed here, please open a pull request to add it :-) @@ -7,15 +8,16 @@ This mod's repository can be found here: https://github.com/sbrl/Minetest-WorldE Adding support for your mod is a 2 step process: 1. Update this file with your definitions -2. Update depends.txt to add a soft dependency on your mod. Find that file here: https://github.com/sbrl/Minetest-WorldEditAdditions/blob/master/worldeditadditions/depends.txt - for example, add something line "my_awesome_mod?" (note the question mark at the end) on a new line(without quotes). +2. Update depends.txt to add a soft dependency on your mod. Find that file here: https://github.com/sbrl/Minetest-WorldEditAdditions/blob/main/worldeditadditions/depends.txt - for example, add something line "my_awesome_mod?" (note the question mark at the end) on a new line(without quotes). -Alternatively, you can register support in your mod directly. Do that by adding a soft dependency on worldeditadditions, and then calling worldeditadditions.normalise_saplingname if worldeditadditions is loaded. +Alternatively, you can register support in your mod directly. Do that by adding a soft dependency on worldeditadditions_core, and then calling worldeditadditions_core.normalise_saplingname if worldeditadditions is loaded. ]]-- --- worldeditadditions.register_sapling_alias("") +-- TODO: MOVE register_sapling_alias & register_sapling_alias_many back to worldeditadditions from worldeditadditions_core!!!! +-- wea_c.register_sapling_alias("") if minetest.get_modpath("default") then - worldeditadditions.register_sapling_alias_many({ + wea_c.register_sapling_alias_many({ { "default:sapling", "apple" }, { "default:bush_sapling", "bush" }, { "default:pine_sapling", "pine" }, @@ -31,7 +33,7 @@ if minetest.get_modpath("default") then end if minetest.get_modpath("moretrees") then - worldeditadditions.register_sapling_alias_many({ + wea_c.register_sapling_alias_many({ { "moretrees:spruce_sapling_ongen", "spruce" }, { "moretrees:rubber_tree_sapling_ongen", "rubber" }, { "moretrees:beech_sapling_ongen", "beech" }, @@ -51,7 +53,7 @@ if minetest.get_modpath("moretrees") then end if minetest.get_modpath("ethereal") then - worldeditadditions.register_sapling_alias_many({ + wea_c.register_sapling_alias_many({ { "ethereal:mushroom_sapling", "mushroom" }, { "ethereal:sakura_sapling", "sakura" }, { "ethereal:birch_sapling", "birch" }, @@ -75,56 +77,56 @@ end -- ██████ ██████ ██████ ███████ ███████ ██ ██ ██ ███████ ███████ ███████ if minetest.get_modpath("lemontree") then - worldeditadditions.register_sapling_alias("lemontree:sapling", "lemon") + wea_c.register_sapling_alias("lemontree:sapling", "lemon") end if minetest.get_modpath("pineapple") then - worldeditadditions.register_sapling_alias("pineapple:sapling", "pineapple") + wea_c.register_sapling_alias("pineapple:sapling", "pineapple") end if minetest.get_modpath("baldcypress") then - worldeditadditions.register_sapling_alias("baldcypress:sapling", "baldcypress") + wea_c.register_sapling_alias("baldcypress:sapling", "baldcypress") end if minetest.get_modpath("bamboo") then - worldeditadditions.register_sapling_alias("bamboo:sprout", "bamboo") + wea_c.register_sapling_alias("bamboo:sprout", "bamboo") end if minetest.get_modpath("birch") then - worldeditadditions.register_sapling_alias("birch:sapling", "birch") + wea_c.register_sapling_alias("birch:sapling", "birch") end if minetest.get_modpath("cherrytree") then - worldeditadditions.register_sapling_alias("cherrytree:sapling", "cherry") + wea_c.register_sapling_alias("cherrytree:sapling", "cherry") end if minetest.get_modpath("clementinetree") then - worldeditadditions.register_sapling_alias("clementinetree:sapling", "clementine") + wea_c.register_sapling_alias("clementinetree:sapling", "clementine") end if minetest.get_modpath("ebony") then - worldeditadditions.register_sapling_alias("ebony:sapling", "ebony") + wea_c.register_sapling_alias("ebony:sapling", "ebony") end if minetest.get_modpath("jacaranda") then - worldeditadditions.register_sapling_alias("jacaranda:sapling", "jacaranda") + wea_c.register_sapling_alias("jacaranda:sapling", "jacaranda") end if minetest.get_modpath("larch") then - worldeditadditions.register_sapling_alias("larch:sapling", "larch") + wea_c.register_sapling_alias("larch:sapling", "larch") end if minetest.get_modpath("maple") then - worldeditadditions.register_sapling_alias("maple:sapling", "maple") + wea_c.register_sapling_alias("maple:sapling", "maple") end if minetest.get_modpath("palm") then - worldeditadditions.register_sapling_alias("palm:sapling", "palm") + wea_c.register_sapling_alias("palm:sapling", "palm") end if minetest.get_modpath("plumtree") then - worldeditadditions.register_sapling_alias("plumtree:sapling", "plum") + wea_c.register_sapling_alias("plumtree:sapling", "plum") end if minetest.get_modpath("hollytree") then - worldeditadditions.register_sapling_alias("hollytree:sapling", "holly") + wea_c.register_sapling_alias("hollytree:sapling", "holly") end if minetest.get_modpath("pomegranate") then - worldeditadditions.register_sapling_alias("pomegranate:sapling", "pomegranate") + wea_c.register_sapling_alias("pomegranate:sapling", "pomegranate") end if minetest.get_modpath("willow") then - worldeditadditions.register_sapling_alias("willow:sapling", "willow") + wea_c.register_sapling_alias("willow:sapling", "willow") end if minetest.get_modpath("mahogany") then - worldeditadditions.register_sapling_alias("mahogany:sapling", "mahogany") + wea_c.register_sapling_alias("mahogany:sapling", "mahogany") end if minetest.get_modpath("chestnuttree") then - worldeditadditions.register_sapling_alias("chestnuttree:sapling", "chestnut") + wea_c.register_sapling_alias("chestnuttree:sapling", "chestnut") end diff --git a/worldeditadditions/lib/conv/conv.lua b/worldeditadditions/lib/conv/conv.lua index eec69b3..6a43996 100644 --- a/worldeditadditions/lib/conv/conv.lua +++ b/worldeditadditions/lib/conv/conv.lua @@ -1,5 +1,6 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 wea.conv = {} @@ -62,8 +63,8 @@ function wea.convolve(pos1, pos2, kernel, kernel_size) local node_id_air = minetest.get_content_id("air") - local heightmap, heightmap_size = wea.terrain.make_heightmap(pos1, pos2, manip, area, data) - local heightmap_conv = wea.table.shallowcopy(heightmap) + local heightmap, heightmap_size = wea_c.terrain.make_heightmap(pos1, pos2, manip, area, data) + local heightmap_conv = wea_c.table.shallowcopy(heightmap) wea.conv.convolve( heightmap_conv, @@ -77,7 +78,7 @@ function wea.convolve(pos1, pos2, kernel, kernel_size) -- print("transformed") -- wea.format.array_2d(heightmap_conv, (pos2.z - pos1.z) + 1) - wea.terrain.apply_heightmap_changes( + wea_c.terrain.apply_heightmap_changes( pos1, pos2, area, data, heightmap, heightmap_conv, heightmap_size ) diff --git a/worldeditadditions/lib/conv/convolve.lua b/worldeditadditions/lib/conv/convolve.lua index 50b86d0..ae63c41 100644 --- a/worldeditadditions/lib/conv/convolve.lua +++ b/worldeditadditions/lib/conv/convolve.lua @@ -1,5 +1,5 @@ -local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 --[[ Convolves over a given 2D heightmap with a given matrix. Note that this *mutates* the given heightmap. @@ -17,7 +17,7 @@ function worldeditadditions.conv.convolve(heightmap, heightmap_size, matrix, mat -- We need to reference a *copy* of the heightmap when convolving -- This is because we need the original values when we perform a -- convolution on a given pixel - local heightmap_copy = wea.table.shallowcopy(heightmap) + local heightmap_copy = wea_c.table.shallowcopy(heightmap) local border_size = Vector3.new( (matrix_size.x-1) / 2, -- x = height diff --git a/worldeditadditions/lib/conv/kernel_gaussian.lua b/worldeditadditions/lib/conv/kernel_gaussian.lua index 4df20c9..19fab0f 100644 --- a/worldeditadditions/lib/conv/kernel_gaussian.lua +++ b/worldeditadditions/lib/conv/kernel_gaussian.lua @@ -1,3 +1,4 @@ +local wea_c = worldeditadditions_core -- Ported from Javascript by Starbeamrainbowlabs -- Original source: https://github.com/sidorares/gaussian-convolution-kernel/ -- From @@ -27,7 +28,7 @@ function worldeditadditions.conv.kernel_gaussian(dimension, sigma) local sum = 0 for i = 0, dimension-1 do for j = 0, dimension-1 do - local distance = worldeditadditions.hypotenuse(i, j, centre, centre) + local distance = wea_c.hypotenuse(i, j, centre, centre) -- The following is an algorithm that came from the gaussian blur -- wikipedia page [1]. diff --git a/worldeditadditions/lib/erode/erode.lua b/worldeditadditions/lib/erode/erode.lua index be16a9a..ffd610b 100644 --- a/worldeditadditions/lib/erode/erode.lua +++ b/worldeditadditions/lib/erode/erode.lua @@ -1,4 +1,5 @@ local wea = worldeditadditions +local wea_c = worldeditadditions_core wea.erode = {} dofile(wea.modpath.."/lib/erode/snowballs.lua") @@ -18,12 +19,12 @@ function wea.erode.run(pos1, pos2, algorithm, params) local region_height = (pos2.y - pos1.y) + 1 - local heightmap = wea.terrain.make_heightmap(pos1, pos2, manip, area, data) - local heightmap_eroded = wea.table.shallowcopy(heightmap) + local heightmap = wea_c.terrain.make_heightmap(pos1, pos2, manip, area, data) + local heightmap_eroded = wea_c.table.shallowcopy(heightmap) -- print("[erode.run] algorithm: "..algorithm..", params:"); - -- print(wea.format.map(params)) - -- wea.format.array_2d(heightmap, heightmap_size.x) + -- print(wea_c.format.map(params)) + -- wea_c.format.array_2d(heightmap, heightmap_size.x) local success, msg, stats if algorithm == "snowballs" then success, msg = wea.erode.snowballs( @@ -49,7 +50,7 @@ function wea.erode.run(pos1, pos2, algorithm, params) return false, "Error: Unknown algorithm '"..algorithm.."'. Currently implemented algorithms: snowballs (2d; hydraulic-like), river (2d; cellular automata-like; fills potholes and lowers towers). Ideas for algorithms to implement are welcome!" end - success, stats = wea.terrain.apply_heightmap_changes( + success, stats = wea_c.terrain.apply_heightmap_changes( pos1, pos2, area, data, heightmap, heightmap_eroded, heightmap_size ) diff --git a/worldeditadditions/lib/erode/river.lua b/worldeditadditions/lib/erode/river.lua index 4d4fda8..a411753 100644 --- a/worldeditadditions/lib/erode/river.lua +++ b/worldeditadditions/lib/erode/river.lua @@ -1,12 +1,13 @@ local wea = worldeditadditions +local wea_c = worldeditadditions_core --- Parses a comma-separated side numbers list out into a list of numbers. -- @param list string The command separated list to parse. -- @returns number[] A list of side numbers. local function parse_sides_list(list) list = list:gsub("%s", "") -- Spaces are not permitted - return wea.table.unique(wea.table.map( - wea.split(list, ","), + return wea_c.table.unique(wea_c.table.map( + wea_c.split(list, ","), function(value) return tonumber(value) end )) end @@ -20,7 +21,7 @@ function worldeditadditions.erode.river(heightmap_initial, heightmap, heightmap_ dolower = true -- Whether to do lower operations or not } -- Apply the custom settings - wea.table.apply(params_custom, params) + wea_c.table.apply(params_custom, params) params.lower_sides = parse_sides_list(params.lower_sides) params.raise_sides = parse_sides_list(params.raise_sides) @@ -30,8 +31,8 @@ function worldeditadditions.erode.river(heightmap_initial, heightmap, heightmap_ local removed = 0 for i=1,params.steps do -- print("[DEBUG:river] step ", i) - -- wea.format.array_2d(heightmap, heightmap_size.x) - local time_start = wea.get_ms_time() + -- wea_c.format.array_2d(heightmap, heightmap_size.x) + local time_start = wea_c.get_ms_time() -- Store up changes to make and make them at the end of the step -- This is important, because decisions @@ -105,7 +106,7 @@ function worldeditadditions.erode.river(heightmap_initial, heightmap, heightmap_ removed = removed + 1 end -- print("[DEBUG:river] sides_higher", sides_higher, "sides_lower", sides_lower, "action", action) - -- wea.format.array_2d(heightmap, heightmap_size.x) + -- wea_c.format.array_2d(heightmap, heightmap_size.x) end end @@ -116,8 +117,8 @@ function worldeditadditions.erode.river(heightmap_initial, heightmap, heightmap_ heightmap[hi] = heightmap[hi] - 1 end - table.insert(timings, wea.get_ms_time() - time_start) + table.insert(timings, wea_c.get_ms_time() - time_start) end - return true, params.steps.." steps made, raising "..filled.." and lowering "..removed.." columns in "..wea.format.human_time(wea.sum(timings)).." (~"..wea.format.human_time(wea.average(timings)).." per step)" + return true, params.steps.." steps made, raising "..filled.." and lowering "..removed.." columns in "..wea_c.format.human_time(wea_c.sum(timings)).." (~"..wea_c.format.human_time(wea_c.average(timings)).." per step)" end diff --git a/worldeditadditions/lib/erode/snowballs.lua b/worldeditadditions/lib/erode/snowballs.lua index cc10ba5..0e70890 100644 --- a/worldeditadditions/lib/erode/snowballs.lua +++ b/worldeditadditions/lib/erode/snowballs.lua @@ -1,16 +1,19 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + -- Test command: //multi //fp set1 1313 6 5540 //fp set2 1338 17 5521 //erode snowballs local function snowball(heightmap, normalmap, heightmap_size, startpos, params) local sediment = 0 - local pos = { x = startpos.x, z = startpos.z } - local pos_prev = { x = pos.x, z = pos.z } - local velocity = { - x = (math.random() * 2 - 1) * params.init_velocity, - z = (math.random() * 2 - 1) * params.init_velocity - } + local pos = Vector3.new(startpos.x, 0, startpos.z) -- X/Z + local pos_prev = Vector3.new(pos.x, 0, pos.z) -- X/Z + local velocity = Vector3.new( + (math.random() * 2 - 1) * params.init_velocity, + 0, + (math.random() * 2 - 1) * params.init_velocity + ) -- X/Z local heightmap_length = #heightmap -- print("[snowball] startpos ("..pos.x..", "..pos.z.."), velocity: ("..velocity.x..", "..velocity.z..")") @@ -29,7 +32,7 @@ local function snowball(heightmap, normalmap, heightmap_size, startpos, params) end if #hist_velocity > 0 and i > 5 - and wea.average(hist_velocity) < 0.03 then + and wea_c.average(hist_velocity) < 0.03 then -- print("[snowball] It looks like we've stopped") return true, i end @@ -50,13 +53,13 @@ local function snowball(heightmap, normalmap, heightmap_size, startpos, params) end velocity.x = params.friction * velocity.x + normalmap[hi].x * params.speed + velocity.y = 0 -- Just in case velocity.z = params.friction * velocity.z + normalmap[hi].y * params.speed - -- print("[snowball] now at ("..x..", "..z..") velocity "..wea.vector.lengthsquared(velocity)..", sediment "..sediment) - local new_vel_sq = wea.vector.lengthsquared(velocity) + local new_vel_sq = velocity:length_squared() if new_vel_sq > 1 then -- print("[snowball] velocity squared over 1, normalising") - velocity = wea.vector.normalize(velocity) + velocity = velocity:normalise() end table.insert(hist_velocity, new_vel_sq) if #hist_velocity > params.velocity_hist_count then table.remove(hist_velocity, 1) end @@ -89,12 +92,12 @@ function wea.erode.snowballs(heightmap_initial, heightmap, heightmap_size, regio count = 25000 } -- Apply the custom settings - wea.table.apply(params_custom, params) + wea_c.table.apply(params_custom, params) -- print("[erode/snowballs] params: ") - -- print(wea.format.map(params)) + -- print(wea_c.format.map(params)) - local normals = wea.terrain.calculate_normals(heightmap, heightmap_size) + local normals = wea_c.terrain.calculate_normals(heightmap, heightmap_size) local stats_steps = {} for i = 1, params.count do @@ -142,5 +145,5 @@ function wea.erode.snowballs(heightmap_initial, heightmap, heightmap_size, regio ) end - return true, ""..#stats_steps.." snowballs simulated, max "..params.max_steps.." steps (averaged ~"..wea.average(stats_steps).." steps)" + return true, ""..#stats_steps.." snowballs simulated, max "..params.max_steps.." steps (averaged ~"..wea_c.average(stats_steps).." steps)" end diff --git a/worldeditadditions/lib/metaballs/playerdata.lua b/worldeditadditions/lib/metaballs/playerdata.lua index 4edf96f..18fe1a8 100644 --- a/worldeditadditions/lib/metaballs/playerdata.lua +++ b/worldeditadditions/lib/metaballs/playerdata.lua @@ -1,5 +1,7 @@ -local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + + local metaballdata = {} @@ -9,7 +11,7 @@ local metaballdata = {} -- @param radius number The radius of the metaball. -- @returns bool,number The number of metaballs now defined for the given player. local function add(player_name, pos, radius) - local pos = Vector3.clone(pos) + pos = Vector3.clone(pos) if type(player_name) ~= "string" then return false, "Error: Invalid player name specified." @@ -63,7 +65,7 @@ local function list_pretty(player_name) }) end - return true, wea.format.make_ascii_table(rows).."\n---------------------------\nTotal "..tostring(#metaball_list).." metaballs" + return true, wea_c.format.make_ascii_table(rows).."\n---------------------------\nTotal "..tostring(#metaball_list).." metaballs" end --- Removes the metaball with the specified index for a given player. diff --git a/worldeditadditions/lib/metaballs/render.lua b/worldeditadditions/lib/metaballs/render.lua index 660c3e6..555934c 100644 --- a/worldeditadditions/lib/metaballs/render.lua +++ b/worldeditadditions/lib/metaballs/render.lua @@ -1,5 +1,6 @@ -local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + -- ███ ███ ███████ ████████ █████ ██████ █████ ██ ██ ███████ -- ████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ diff --git a/worldeditadditions/lib/noise/apply_2d.lua b/worldeditadditions/lib/noise/apply_2d.lua index 1885871..884384f 100644 --- a/worldeditadditions/lib/noise/apply_2d.lua +++ b/worldeditadditions/lib/noise/apply_2d.lua @@ -1,9 +1,10 @@ local wea = worldeditadditions +local wea_c = worldeditadditions_core --- Applies the given noise field to the given heightmap. -- Mutates the given heightmap. --- @param heightmap number[] A table of ZERO indexed numbers representing the heghtmap - see worldeditadditions.terrain.make_heightmap(). +-- @param heightmap number[] A table of ZERO indexed numbers representing the heghtmap - see wea_c.terrain.make_heightmap(). -- @param noise number[] An table identical in structure to the heightmap containing the noise values to apply. -- @param heightmap_size {x:number,z:number} A 2d vector representing the size of the heightmap. -- @param region_height number The height of the defined region. @@ -18,7 +19,7 @@ function wea.noise.apply_2d(heightmap, noise, heightmap_size, pos1, pos2, apply_ -- print("NOISE APPLY_2D\n") - wea.format.array_2d(noise, heightmap_size.x) + wea_c.format.array_2d(noise, heightmap_size.x) local height = tonumber(apply_mode) @@ -29,15 +30,15 @@ function wea.noise.apply_2d(heightmap, noise, heightmap_size, pos1, pos2, apply_ local i = (z * heightmap_size.x) + x if apply_mode == "add" then - heightmap[i] = wea.round(heightmap[i] + noise[i]) + heightmap[i] = wea_c.round(heightmap[i] + noise[i]) elseif apply_mode == "multiply" then - heightmap[i] = wea.round(heightmap[i] * noise[i]) + heightmap[i] = wea_c.round(heightmap[i] * noise[i]) elseif height then -- Rescale from 0 - 1 to -1 - +1 local rescaled = (noise[i] * 2) - 1 -- Rescale to match the height specified rescaled = rescaled * height - rescaled = math.floor(wea.clamp( + rescaled = math.floor(wea_c.clamp( heightmap[i] + rescaled, 0, region_height )) @@ -54,7 +55,7 @@ function wea.noise.apply_2d(heightmap, noise, heightmap_size, pos1, pos2, apply_ -- end -- print("HEIGHTMAP\n") - -- worldeditadditions.format.array_2d(heightmap, heightmap_size.x) + -- wea_c.format.array_2d(heightmap, heightmap_size.x) return true diff --git a/worldeditadditions/lib/noise/engines/infrared.lua b/worldeditadditions/lib/noise/engines/infrared.lua index 469cec9..4b2ea7b 100644 --- a/worldeditadditions/lib/noise/engines/infrared.lua +++ b/worldeditadditions/lib/noise/engines/infrared.lua @@ -1,4 +1,6 @@ local wea = worldeditadditions +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 local White = dofile(wea.modpath.."/lib/noise/engines/white.lua") @@ -25,7 +27,7 @@ function Infrared:noise( x, y, z ) end end end - return wea.average(values) + return wea_c.average(values) end return Infrared diff --git a/worldeditadditions/lib/noise/engines/perlin.lua b/worldeditadditions/lib/noise/engines/perlin.lua index 3c4777f..a46717a 100644 --- a/worldeditadditions/lib/noise/engines/perlin.lua +++ b/worldeditadditions/lib/noise/engines/perlin.lua @@ -1,4 +1,6 @@ local wea = worldeditadditions +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 --- Perlin noise generation engine. -- Original code by Ken Perlin: http://mrl.nyu.edu/~perlin/noise/ @@ -58,9 +60,9 @@ end function Perlin:noise( x, y, z ) y = y or 0 z = z or 0 - local xi = wea.bit.band(math.floor(x), 255) - local yi = wea.bit.band(math.floor(y), 255) - local zi = wea.bit.band(math.floor(z), 255) + local xi = wea_c.bit.band(math.floor(x), 255) + local yi = wea_c.bit.band(math.floor(y), 255) + local zi = wea_c.bit.band(math.floor(z), 255) -- print("x", x, "y", y, "z", z, "xi", xi, "yi", yi, "zi", zi) -- print("p[xi]", self.p[xi]) @@ -118,7 +120,7 @@ function Perlin:lerp(t, a, b) end function Perlin:grad(hash, x, y, z) - local h = wea.bit.band(hash, 15) + local h = wea_c.bit.band(hash, 15) local u = h < 8 and x or y local v = h < 4 and y or ((h == 12 or h == 14) and x or z) return ((h and 1) == 0 and u or - u) + ((h and 2) == 0 and v or - v) diff --git a/worldeditadditions/lib/noise/engines/perlinmt.lua b/worldeditadditions/lib/noise/engines/perlinmt.lua index 711f429..300400f 100644 --- a/worldeditadditions/lib/noise/engines/perlinmt.lua +++ b/worldeditadditions/lib/noise/engines/perlinmt.lua @@ -1,4 +1,5 @@ -local wea = worldeditadditions +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 local PerlinMT = {} @@ -25,7 +26,7 @@ function PerlinMT.new(seed, params) end function PerlinMT:noise( x, y, z ) - local value = self.engine:get_3d(wea.Vector3.new(x, y, z)) + local value = self.engine:get_3d(Vector3.new(x, y, z)) return value end diff --git a/worldeditadditions/lib/noise/engines/red.lua b/worldeditadditions/lib/noise/engines/red.lua index 3ff9e13..63e7530 100644 --- a/worldeditadditions/lib/noise/engines/red.lua +++ b/worldeditadditions/lib/noise/engines/red.lua @@ -1,4 +1,5 @@ local wea = worldeditadditions +local wea_c = worldeditadditions_core local White = dofile(wea.modpath.."/lib/noise/engines/white.lua") @@ -33,7 +34,7 @@ function Red:noise( x, y, z ) self.white:noise(x + 1, y + 1, z), self.white:noise(x + 1, y + 1, z + 1), } - return wea.average(values) + return wea_c.average(values) end return Red diff --git a/worldeditadditions/lib/noise/engines/sin.lua b/worldeditadditions/lib/noise/engines/sin.lua index 1db6b7e..3f30610 100644 --- a/worldeditadditions/lib/noise/engines/sin.lua +++ b/worldeditadditions/lib/noise/engines/sin.lua @@ -1,5 +1,3 @@ -local wea = worldeditadditions - local Sin = {} Sin.__index = Sin diff --git a/worldeditadditions/lib/noise/engines/white.lua b/worldeditadditions/lib/noise/engines/white.lua index 773fd12..855f4ac 100644 --- a/worldeditadditions/lib/noise/engines/white.lua +++ b/worldeditadditions/lib/noise/engines/white.lua @@ -1,4 +1,3 @@ -local wea = worldeditadditions local White = {} diff --git a/worldeditadditions/lib/noise/make_2d.lua b/worldeditadditions/lib/noise/make_2d.lua index 2c69949..0658298 100644 --- a/worldeditadditions/lib/noise/make_2d.lua +++ b/worldeditadditions/lib/noise/make_2d.lua @@ -1,10 +1,11 @@ +local wea = worldeditadditions +local wea_c = worldeditadditions_core -- ███ ███ █████ ██ ██ ███████ ██████ ██████ -- ████ ████ ██ ██ ██ ██ ██ ██ ██ ██ -- ██ ████ ██ ███████ █████ █████ █████ ██ ██ -- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -- ██ ██ ██ ██ ██ ██ ███████ ███████ ███████ ██████ -local wea = worldeditadditions -- Generate a flat array of 2D noise. -- Written with help from https://www.redblobgames.com/maps/terrain-from-noise/ @@ -55,7 +56,7 @@ function worldeditadditions.noise.make_2d(size, start_pos, params) print("NOISE MAKE_2D\n") - worldeditadditions.format.array_2d(result, size.x) + wea_c.format.array_2d(result, size.x) -- We don't round here, because otherwise when we apply it it'll be inaccurate diff --git a/worldeditadditions/lib/noise/params_apply_default.lua b/worldeditadditions/lib/noise/params_apply_default.lua index a2bf2fd..c35ca19 100644 --- a/worldeditadditions/lib/noise/params_apply_default.lua +++ b/worldeditadditions/lib/noise/params_apply_default.lua @@ -1,4 +1,6 @@ local wea = worldeditadditions +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 --- Makes sure that the default settings are all present in the given params table. -- This way not all params have to be specified by the user. @@ -15,9 +17,9 @@ function worldeditadditions.noise.params_apply_default(params) -- The backend noise algorithm to use algorithm = "perlinmt", -- Zooms in and out - scale = wea.Vector3.new(1, 1, 1), + scale = Vector3.new(1, 1, 1), -- Offset the generated noise by this vector. - offset = wea.Vector3.new(0, 0, 0), + offset = Vector3.new(0, 0, 0), -- Apply this exponent to the resulting noise value exponent = 1, -- Multiply the resulting noise value by this number. Changes the "strength" of the noise @@ -34,7 +36,7 @@ function worldeditadditions.noise.params_apply_default(params) -- If params[1] is thing, this is a list of params -- This might be a thing if we're dealing with multiple octaves for i,params_el in ipairs(params) do - local default_copy = wea.table.shallowcopy(params_default) + local default_copy = wea_c.table.shallowcopy(params_default) -- Keyword support for _i, keyword in ipairs(wea.noise.engines.available) do @@ -44,7 +46,7 @@ function worldeditadditions.noise.params_apply_default(params) end -- Apply this table to fill in the gaps - wea.table.apply( + wea_c.table.apply( params_el, default_copy ) diff --git a/worldeditadditions/lib/noise/run2d.lua b/worldeditadditions/lib/noise/run2d.lua index c08657a..3657bf9 100644 --- a/worldeditadditions/lib/noise/run2d.lua +++ b/worldeditadditions/lib/noise/run2d.lua @@ -1,7 +1,10 @@ +local wea = worldeditadditions +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + --- Applies a layer of 2D noise over the terrain in the defined region. -- @module worldeditadditions.noise2d -local wea = worldeditadditions -- ███ ██ ██████ ██ ███████ ███████ ██████ ██████ -- ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ @@ -13,24 +16,24 @@ local wea = worldeditadditions -- @param pos2 Vector pos2 of the defined region -- @param noise_params table A noise parameters table. function wea.noise.run2d(pos1, pos2, noise_params) - pos1, pos2 = worldedit.sort_pos(pos1, pos2) + pos1, pos2 = Vector3.sort(pos1, pos2) -- pos2 will always have the highest co-ordinates now -- Fill in the default params - -- print("DEBUG noise_params_custom ", wea.format.map(noise_params)) + -- print("DEBUG noise_params_custom ", wea_c.format.map(noise_params)) noise_params = wea.noise.params_apply_default(noise_params) - -- print("DEBUG noise_params[1] ", wea.format.map(noise_params[1])) + -- print("DEBUG noise_params[1] ", wea_c.format.map(noise_params[1])) -- 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 = wea.terrain.make_heightmap( + local heightmap_old, heightmap_size = wea_c.terrain.make_heightmap( pos1, pos2, manip, area, data ) - local heightmap_new = wea.table.shallowcopy(heightmap_old) + local heightmap_new = wea_c.table.shallowcopy(heightmap_old) local success, noisemap = wea.noise.make_2d( heightmap_size, @@ -49,7 +52,7 @@ function wea.noise.run2d(pos1, pos2, noise_params) if not success then return success, message end local stats - success, stats = wea.terrain.apply_heightmap_changes( + success, stats = wea_c.terrain.apply_heightmap_changes( pos1, pos2, area, data, heightmap_old, heightmap_new, diff --git a/worldeditadditions/lib/sculpt/apply.lua b/worldeditadditions/lib/sculpt/apply.lua index a19a662..8af9a5d 100644 --- a/worldeditadditions/lib/sculpt/apply.lua +++ b/worldeditadditions/lib/sculpt/apply.lua @@ -1,5 +1,6 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 --- Applies the given brush with the given height and size to the given position. -- @param pos1 Vector3 The position at which to apply the brush. @@ -36,12 +37,12 @@ local function apply(pos1, brush_name, height, brush_size) local manip, area = worldedit.manip_helpers.init(pos1_compute, pos2_compute) local data = manip:get_data() - local heightmap, heightmap_size = wea.terrain.make_heightmap( + local heightmap, heightmap_size = wea_c.terrain.make_heightmap( pos1_compute, pos2_compute, manip, area, data ) - local heightmap_orig = wea.table.shallowcopy(heightmap) + local heightmap_orig = wea_c.table.shallowcopy(heightmap) local success2, added, removed = wea.sculpt.apply_heightmap( brush, brush_size_actual, @@ -52,7 +53,7 @@ local function apply(pos1, brush_name, height, brush_size) if not success2 then return success2, added end -- 3: Save back to disk & return - local success3, stats = wea.terrain.apply_heightmap_changes( + local success3, stats = wea_c.terrain.apply_heightmap_changes( pos1_compute, pos2_compute, area, data, heightmap_orig, heightmap, diff --git a/worldeditadditions/lib/sculpt/apply_heightmap.lua b/worldeditadditions/lib/sculpt/apply_heightmap.lua index dd66446..34e3ed4 100644 --- a/worldeditadditions/lib/sculpt/apply_heightmap.lua +++ b/worldeditadditions/lib/sculpt/apply_heightmap.lua @@ -1,5 +1,5 @@ -local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 --- Applies the given brush at the given x/z position to the given heightmap. -- Important: Where a Vector3 is mentioned in the parameter list, it reall MUST @@ -26,6 +26,7 @@ local function apply_heightmap(brush, brush_size, height, position, heightmap, h local added = 0 local removed = 0 + -- TODO: Make the strength of the brush depend on the height of the nodes in the heightmap? -- Iterate over the heightmap and apply the brush -- Note that we do not iterate over the brush, because we don't know if the diff --git a/worldeditadditions/lib/sculpt/brushes/__gaussian.lua b/worldeditadditions/lib/sculpt/brushes/__gaussian.lua index 32ec007..2dc3f94 100644 --- a/worldeditadditions/lib/sculpt/brushes/__gaussian.lua +++ b/worldeditadditions/lib/sculpt/brushes/__gaussian.lua @@ -1,20 +1,22 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions +local Vector3 = wea_c.Vector3 --- Returns a smooth gaussian brush. -- @param size Vector3 The target size of the brush. Note that the actual size of the brush will be different, as the gaussian function has some limitations. -- @param sigma=2 number The 'smoothness' of the brush. Higher values are more smooth. return function(size, sigma) - local size = math.min(size.x, size.y) - if size % 2 == 0 then size = size - 1 end + size = math.min(size.x, size.y) + if size % 2 == 0 then size = size - 1 end -- Gaussian runs on odd numbers if size < 1 then - return false, "Error: Invalid brush size." + return false, "Error: Invalid brush size (brushes must be at least 1 node in size)." end + local success, gaussian = wea.conv.kernel_gaussian(size, sigma) -- Normalise values to fill the range 0 - 1 -- By default, wea.conv.kernel_gaussian values add up to 1 in total - local max = wea.max(gaussian) + local max = wea_c.max(gaussian) for i=0,size*size-1 do gaussian[i] = gaussian[i] / max end diff --git a/worldeditadditions/lib/sculpt/brushes/circle.lua b/worldeditadditions/lib/sculpt/brushes/circle.lua index 2d7de2f..2f3aa48 100644 --- a/worldeditadditions/lib/sculpt/brushes/circle.lua +++ b/worldeditadditions/lib/sculpt/brushes/circle.lua @@ -1,7 +1,9 @@ -local wea = worldeditadditions -local Vector3 = wea.Vector3 - +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 +--- Makes a circle brush of a given size. +-- @param size Vector3 The desired sizez of the brush (only X and Y are considered; Z is ignored). +-- @returns bool,brush,Vector3 Success bool, then the brush, then finally the actual size of the brush generated. return function(size) local brush = {} diff --git a/worldeditadditions/lib/sculpt/brushes/circle_soft1.lua b/worldeditadditions/lib/sculpt/brushes/circle_soft1.lua index 704b077..6ff6019 100644 --- a/worldeditadditions/lib/sculpt/brushes/circle_soft1.lua +++ b/worldeditadditions/lib/sculpt/brushes/circle_soft1.lua @@ -1,5 +1,6 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 return function(size) @@ -30,14 +31,14 @@ return function(size) local success, kernel = wea.conv.kernel_gaussian(kernel_size, 2) if not success then return success, kernel end - local success2, msg = worldeditadditions.conv.convolve( + local success2, msg = wea.conv.convolve( brush, Vector3.new(size.x, 0, size.y), kernel, Vector3.new(kernel_size, 0, kernel_size) ) if not success2 then return success2, msg end -- Rescale to be between 0 and 1 - local max_value = wea.max(brush) + local max_value = wea_c.max(brush) for i,value in pairs(brush) do brush[i] = brush[i] / max_value end diff --git a/worldeditadditions/lib/sculpt/import_static.lua b/worldeditadditions/lib/sculpt/import_static.lua index 92f628a..0d28984 100644 --- a/worldeditadditions/lib/sculpt/import_static.lua +++ b/worldeditadditions/lib/sculpt/import_static.lua @@ -1,5 +1,4 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 local parse_static = dofile(wea.modpath.."/lib/sculpt/parse_static.lua") @@ -8,8 +7,9 @@ local parse_static = dofile(wea.modpath.."/lib/sculpt/parse_static.lua") -- @returns true,table,Vector3|false,string A success boolean, followed either by an error message as a string or the brush (as a table) and it's size (as an X/Y Vector3) return function(filepath) local handle = io.open(filepath) + if not handle then - handle:close() + if handle ~= nil then handle:close() end return false, "Error: Failed to open the static brush file at '"..filepath.."'." end diff --git a/worldeditadditions/lib/sculpt/init.lua b/worldeditadditions/lib/sculpt/init.lua index 5dfffbb..33dca39 100644 --- a/worldeditadditions/lib/sculpt/init.lua +++ b/worldeditadditions/lib/sculpt/init.lua @@ -12,7 +12,6 @@ local sculpt = { make_brush = dofile(wea.modpath.."/lib/sculpt/make_brush.lua"), make_preview = dofile(wea.modpath.."/lib/sculpt/make_preview.lua"), preview_brush = dofile(wea.modpath.."/lib/sculpt/preview_brush.lua"), - read_brush_static = dofile(wea.modpath.."/lib/sculpt/read_brush_static.lua"), apply_heightmap = dofile(wea.modpath.."/lib/sculpt/apply_heightmap.lua"), apply = dofile(wea.modpath.."/lib/sculpt/apply.lua"), scan_static = dofile(wea.modpath.."/lib/sculpt/scan_static.lua"), diff --git a/worldeditadditions/lib/sculpt/make_preview.lua b/worldeditadditions/lib/sculpt/make_preview.lua index 2b29d17..59ea9e2 100644 --- a/worldeditadditions/lib/sculpt/make_preview.lua +++ b/worldeditadditions/lib/sculpt/make_preview.lua @@ -1,5 +1,4 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 local make_brush = dofile(wea.modpath.."/lib/sculpt/make_brush.lua") diff --git a/worldeditadditions/lib/sculpt/parse_static.lua b/worldeditadditions/lib/sculpt/parse_static.lua index 4570ea1..a1a8a29 100644 --- a/worldeditadditions/lib/sculpt/parse_static.lua +++ b/worldeditadditions/lib/sculpt/parse_static.lua @@ -1,5 +1,6 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 --- Parses a static brush definition. -- @param source string The source string that contains the static brush, formatted as TSV. @@ -11,12 +12,12 @@ return function(source) -- Parse out the TSV into a table of tables, while also parsing values as numbers -- Also keeps track of the maximum/minimum values found for rescaling later. - local values = wea.table.map( - wea.split(source, "\n", false), + local values = wea_c.table.map( + wea_c.split(source, "\n", false), function(line) - local row = wea.split(line, "%s+", false) + local row = wea_c.split(line, "%s+", false) width = math.max(width, #row) - return wea.table.map( + return wea_c.table.map( row, function(pixel) local value = tonumber(pixel) diff --git a/worldeditadditions/lib/sculpt/preview_brush.lua b/worldeditadditions/lib/sculpt/preview_brush.lua index 13b07df..8aaab9c 100644 --- a/worldeditadditions/lib/sculpt/preview_brush.lua +++ b/worldeditadditions/lib/sculpt/preview_brush.lua @@ -1,5 +1,6 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 local make_brush = dofile(wea.modpath.."/lib/sculpt/make_brush.lua") local make_preview = dofile(wea.modpath.."/lib/sculpt/make_preview.lua") diff --git a/worldeditadditions/lib/sculpt/read_brush_static.lua b/worldeditadditions/lib/sculpt/read_brush_static.lua deleted file mode 100644 index df87f8c..0000000 --- a/worldeditadditions/lib/sculpt/read_brush_static.lua +++ /dev/null @@ -1,11 +0,0 @@ - -return function(filepath) - local brush_size = { x = 0, y = 0 } - local brush = { } - - -- TODO: Import brush here - - return false, "Error: Not implemented yet" - - -- return true, brush, brush_size -end diff --git a/worldeditadditions/lib/sculpt/scan_static.lua b/worldeditadditions/lib/sculpt/scan_static.lua index a300ee6..5f455dd 100644 --- a/worldeditadditions/lib/sculpt/scan_static.lua +++ b/worldeditadditions/lib/sculpt/scan_static.lua @@ -1,5 +1,6 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 local import_static = dofile(wea.modpath.."/lib/sculpt/import_static.lua") @@ -25,14 +26,14 @@ end -- @returns bool,loaded,errors A success boolean, followed by the number of brushes loaded, followed by the number of errors encountered while loading brushes (errors are logged as warnings with Minetest) return function(dirpath, overwrite_existing) if overwrite_existing == nil then overwrite_existing = false end - local files = wea.io.scandir_files(dirpath) + local files = wea_c.io.scandir_files(dirpath) local brushes_loaded = 0 local errors = 0 for i, filename in pairs(files) do - if wea.str_ends(filename, ".brush.tsv") then + if wea_c.str_ends(filename, ".brush.tsv") then local filepath = dirpath.."/"..filename local name = filename:gsub(".brush.tsv", "") diff --git a/worldeditadditions/lib/wireframe/corner_set.lua b/worldeditadditions/lib/wireframe/corner_set.lua index 9a6acef..b67f58d 100644 --- a/worldeditadditions/lib/wireframe/corner_set.lua +++ b/worldeditadditions/lib/wireframe/corner_set.lua @@ -1,3 +1,6 @@ +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + -- ██████ ██████ ██████ ███ ██ ███████ ██████ ███████ ███████ ████████ -- ██ ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ -- ██ ██ ██ ██████ ██ ██ ██ █████ ██████ ███████ █████ ██ @@ -5,21 +8,21 @@ -- ██████ ██████ ██ ██ ██ ████ ███████ ██ ██ ███████ ███████ ██ --- Puts a node at each corner of selection box. --- @param {Position} pos1 The 1st position defining the WorldEdit selection --- @param {Position} pos2 The 2nd positioon defining the WorldEdit selection --- @param {string} node Name of the node to place -function worldeditadditions.corner_set(pos1,pos2,node) - - -- z y x is the preferred loop order (because CPU cache I'd guess, since then we're iterating linearly through the data array) - local counts = { replaced = 0 } - for i,z in pairs({pos1.z,pos2.z}) do - for j,y in pairs({pos1.y,pos2.y}) do - for k,x in pairs({pos1.x,pos2.x}) do - minetest.set_node(vector.new(x,y,z), {name=node}) - counts.replaced = counts.replaced + 1 - end - end - end - - return true, counts.replaced +-- @param pos1 Vector3 The 1st position defining the WorldEdit selection +-- @param pos2 Vector3 The 2nd positioon defining the WorldEdit selection +-- @param node string Name of the node to place +function worldeditadditions.corner_set(pos1, pos2, node) + + -- z y x is the preferred loop order (because CPU cache I'd guess, since then we're iterating linearly through the data array) + local counts = {replaced = 0} + for i, z in pairs({pos1.z, pos2.z}) do + for j, y in pairs({pos1.y, pos2.y}) do + for k, x in pairs({pos1.x, pos2.x}) do + minetest.set_node(Vector3.new(x, y, z), {name = node}) + counts.replaced = counts.replaced + 1 + end + end + end + + return true, counts.replaced end diff --git a/worldeditadditions/lib/wireframe/make_compass.lua b/worldeditadditions/lib/wireframe/make_compass.lua index a272df7..9ccd973 100644 --- a/worldeditadditions/lib/wireframe/make_compass.lua +++ b/worldeditadditions/lib/wireframe/make_compass.lua @@ -1,3 +1,6 @@ +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + -- ███ ███ █████ ██ ██ ███████ ██████ ██████ ███ ███ ██████ █████ ███████ ███████ -- ████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ████ ████ ██ ██ ██ ██ ██ ██ -- ██ ████ ██ ███████ █████ █████ ██ ██ ██ ██ ████ ██ ██████ ███████ ███████ ███████ @@ -9,20 +12,20 @@ -- @param {string} node1 Name of the node to place -- @param {string} node2 Name of the node of the bead function worldeditadditions.make_compass(pos1,node1,node2) - - minetest.set_node(vector.add(pos1,vector.new(0,1,3)), {name=node2}) + pos1 = Vector3.clone(pos1) + minetest.set_node(pos1 + Vector3.new(0,1,3), { name = node2 }) local counts = { replaced = 1 } -- z y x is the preferred loop order (because CPU cache I'd guess, since then we're iterating linearly through the data array) for z = -3,3 do if z ~= 0 then for k,x in pairs({math.floor(-3/math.abs(z)),0,math.ceil(3/math.abs(z))}) do - minetest.set_node(vector.new(pos1.x+x,pos1.y,pos1.z+z), {name=node1}) + minetest.set_node(Vector3.new(pos1.x+x,pos1.y,pos1.z+z), {name=node1}) counts.replaced = counts.replaced + 1 end else for x = -3,3 do - minetest.set_node(vector.new(pos1.x+x,pos1.y,pos1.z), {name=node1}) + minetest.set_node(Vector3.new(pos1.x+x,pos1.y,pos1.z), {name=node1}) counts.replaced = counts.replaced + 1 end end diff --git a/worldeditadditions/lib/wireframe/wire_box.lua b/worldeditadditions/lib/wireframe/wire_box.lua index fc24b04..cf8dea1 100644 --- a/worldeditadditions/lib/wireframe/wire_box.lua +++ b/worldeditadditions/lib/wireframe/wire_box.lua @@ -1,3 +1,5 @@ +local v3 = worldeditadditions_core.Vector3 + -- ██ ██ ██ ██████ ███████ ██████ ██████ ██ ██ -- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -- ██ █ ██ ██ ██████ █████ ██████ ██ ██ ███ @@ -8,7 +10,6 @@ -- @param {Position} pos1 The 1st position defining the WorldEdit selection -- @param {Position} pos2 The 2nd positioon defining the WorldEdit selection -- @param {string} node Name of the node to place -local v3 = worldeditadditions.Vector3 function worldeditadditions.wire_box(pos1,pos2,node) local node_id_replace = minetest.get_content_id(node) local ps1, ps2 = v3.sort(pos1,pos2) diff --git a/worldeditadditions_commands/commands/convolve.lua b/worldeditadditions_commands/commands/convolve.lua index b10cecc..6154ead 100644 --- a/worldeditadditions_commands/commands/convolve.lua +++ b/worldeditadditions_commands/commands/convolve.lua @@ -56,7 +56,7 @@ worldeditadditions_core.register_command("convolve", { func = function(name, kernel_name, kernel_width, kernel_height, sigma) local start_time = wea_c.get_ms_time() - local success, kernel = wea_c.get_conv_kernel( + local success, kernel = wea.get_conv_kernel( kernel_name, kernel_width, kernel_height, sigma