mirror of
https://github.com/sbrl/Minetest-WorldEditAdditions.git
synced 2024-11-26 17:12:59 +00:00
comments: update
This commit is contained in:
parent
0f25cf5b4e
commit
9d47dcbcf3
16 changed files with 79 additions and 11 deletions
|
@ -4,14 +4,19 @@
|
||||||
-- ██ ██ ██ ██
|
-- ██ ██ ██ ██
|
||||||
-- ██████ ██ ██
|
-- ██████ ██ ██
|
||||||
|
|
||||||
-- LuaJIT bit polyfill
|
|
||||||
-- @source https://github.com/Rabios/polyfill.lua/blob/master/polyfill.lua
|
|
||||||
-- Adapted for Minetest by Starbeamrainbowlabs
|
|
||||||
-- Note that this file is MIT licenced, and NOT MPL-2.0!
|
|
||||||
-- @licence MIT
|
|
||||||
-- Docs: http://bitop.luajit.org/api.html
|
|
||||||
|
|
||||||
-- module: bit
|
--- LuaJIT bit polyfill
|
||||||
|
-- Adapted for Minetest by Starbeamrainbowlabs
|
||||||
|
--
|
||||||
|
-- Note that this file is MIT licenced, and NOT MPL-2.0!
|
||||||
|
--
|
||||||
|
-- Docs: http://bitop.luajit.org/api.html
|
||||||
|
--
|
||||||
|
-- TODO: Document these.
|
||||||
|
-- @module worldeditadditions_core.bit
|
||||||
|
-- @source https://github.com/Rabios/polyfill.lua/blob/master/polyfill.lua
|
||||||
|
-- @licence MIT
|
||||||
|
|
||||||
|
|
||||||
local bit_local
|
local bit_local
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
|
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core
|
||||||
|
|
||||||
|
|
||||||
--- Interpolates between the 2 given points
|
--- Interpolates between the 2 given points
|
||||||
|
--
|
||||||
|
-- TODO: refactor numbers.lua and move this function into there instead
|
||||||
-- @param a Vector3|number The starting point.
|
-- @param a Vector3|number The starting point.
|
||||||
-- @param b Vector3|number The ending point.
|
-- @param b Vector3|number The ending point.
|
||||||
-- @param time number The percentage between 0 and 1 to interpolate to.
|
-- @param time number The percentage between 0 and 1 to interpolate to.
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
-- ██ ███ ██ ███████ ██████ ███████ ██████ ████████
|
||||||
|
-- ██ ████ ██ ██ ██ ██ ██ ██ ██
|
||||||
|
-- ██ ██ ██ ██ ███████ ██████ █████ ██ ██
|
||||||
|
-- ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||||
|
-- ██ ██ ████ ███████ ██ ███████ ██████ ██
|
||||||
|
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core
|
||||||
|
|
||||||
--- Serialises an arbitrary value to a string.
|
--- Serialises an arbitrary value to a string.
|
||||||
-- Note that although the resulting table *looks* like valid Lua, it isn't.
|
-- Note that although the resulting table *looks* like valid Lua, it isn't.
|
||||||
-- Completely arbitrarily, if a table (or it's associated metatable) has the
|
-- Completely arbitrarily, if a table (or it's associated metatable) has the
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
|
||||||
|
--- Functions to abstract file I/O away.
|
||||||
|
-- I'm very suspicious of Minetest's API changing from under our feet.
|
||||||
|
-- @namespace worldeditadditions_core.io
|
||||||
local io = {
|
local io = {
|
||||||
-- Ref https://minetest.gitlab.io/minetest/minetest-namespace-reference/#utilities
|
-- Ref https://minetest.gitlab.io/minetest/minetest-namespace-reference/#utilities
|
||||||
scandir = function(dirpath)
|
scandir = function(dirpath)
|
||||||
|
|
|
@ -21,7 +21,7 @@ local function round(num, numDecimalPlaces)
|
||||||
return math.floor(num * mult + 0.5) / mult
|
return math.floor(num * mult + 0.5) / mult
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Pads str to length len with char from right
|
-- Pads str to length len with char from right
|
||||||
-- @source https://snipplr.com/view/13092/strlpad--pad-string-to-the-left
|
-- @source https://snipplr.com/view/13092/strlpad--pad-string-to-the-left
|
||||||
local function str_padend(str, len, char)
|
local function str_padend(str, len, char)
|
||||||
if char == nil then char = ' ' end
|
if char == nil then char = ' ' end
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
|
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core
|
||||||
|
|
||||||
local node_id_air = minetest.get_content_id("air")
|
local node_id_air = minetest.get_content_id("air")
|
||||||
local node_id_ignore = minetest.get_content_id("ignore")
|
local node_id_ignore = minetest.get_content_id("ignore")
|
||||||
|
@ -104,6 +106,7 @@ function wea_c.register_sapling_alias_many(tbl)
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Returns the current key ⇒ value table of sapling names and aliases.
|
--- Returns the current key ⇒ value table of sapling names and aliases.
|
||||||
-- @return table
|
-- @return table
|
||||||
function wea_c.get_all_sapling_aliases()
|
function wea_c.get_all_sapling_aliases()
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
|
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core
|
||||||
|
|
||||||
|
|
||||||
--- Makes an associative table of node_name => weight into a list of node ids.
|
--- Makes an associative table of node_name => weight into a list of node ids.
|
||||||
-- Node names with a higher weight are repeated more times.
|
-- Node names with a higher weight are repeated more times.
|
||||||
function wea_c.make_weighted(tbl)
|
function wea_c.make_weighted(tbl)
|
||||||
|
|
|
@ -1,17 +1,27 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core
|
||||||
|
|
||||||
-- From http://lua-users.org/wiki/SimpleRound
|
--- Rounds a number to a given number of decimal places.
|
||||||
|
-- @source http://lua-users.org/wiki/SimpleRound
|
||||||
|
-- @param num number The number to round.
|
||||||
|
-- @param numDecimalPlaces number The number of decimal places to round to. Should be an integer greater than or equal to 0.
|
||||||
function wea_c.round(num, numDecimalPlaces)
|
function wea_c.round(num, numDecimalPlaces)
|
||||||
local mult = 10^(numDecimalPlaces or 0)
|
local mult = 10^(numDecimalPlaces or 0)
|
||||||
return math.floor(num * mult + 0.5) / mult
|
return math.floor(num * mult + 0.5) / mult
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Calculates the length of the hypoentuse of a right-angled triangle.
|
||||||
|
-- TODO: Document this function
|
||||||
function wea_c.hypotenuse(x1, y1, x2, y2)
|
function wea_c.hypotenuse(x1, y1, x2, y2)
|
||||||
local xSquare = (x1 - x2) ^ 2;
|
local xSquare = (x1 - x2) ^ 2;
|
||||||
local ySquare = (y1 - y2) ^ 2;
|
local ySquare = (y1 - y2) ^ 2;
|
||||||
return math.sqrt(xSquare + ySquare);
|
return math.sqrt(xSquare + ySquare);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Adds up all the numbers in the given list
|
||||||
|
-- @param number[] The list of numbers to add.
|
||||||
|
-- @returns number The sum total of all the numbers in the given list.
|
||||||
function wea_c.sum(list)
|
function wea_c.sum(list)
|
||||||
if #list == 0 then return 0 end
|
if #list == 0 then return 0 end
|
||||||
local sum = 0
|
local sum = 0
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
local v3 = worldeditadditions_core.Vector3
|
local v3 = worldeditadditions_core.Vector3
|
||||||
|
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Returns the player's position (at leg level).
|
--- Returns the player's position (at leg level).
|
||||||
-- @param name string The name of the player to return facing direction of.
|
-- @param name string The name of the player to return facing direction of.
|
||||||
-- @return vector Returns position.
|
-- @return vector Returns position.
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
local Vector3 = wea_c.Vector3
|
local Vector3 = wea_c.Vector3
|
||||||
|
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core
|
||||||
|
|
||||||
--- Raycasts to find a node in the direction the given player is looking.
|
--- Raycasts to find a node in the direction the given player is looking.
|
||||||
|
--
|
||||||
|
-- This function is not currently aware of custom hitboxes.
|
||||||
-- @param player Player The player object to raycast from.
|
-- @param player Player The player object to raycast from.
|
||||||
-- @param maxdist number The maximum distance to raycast.
|
-- @param maxdist number The maximum distance to raycast.
|
||||||
-- @param skip_liquid bool Whether to skip liquids when raycasting.
|
-- @param skip_liquid bool Whether to skip liquids when raycasting.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- Sets for lua!
|
--= Sets for lua!
|
||||||
-- local Set = {}
|
-- local Set = {}
|
||||||
--- Option 1:
|
--= Option 1:
|
||||||
-- Set.__index = Set
|
-- Set.__index = Set
|
||||||
-- Set.__newindex = function(tbl, key, value)
|
-- Set.__newindex = function(tbl, key, value)
|
||||||
-- if not tbl.__protected[key] then
|
-- if not tbl.__protected[key] then
|
||||||
|
@ -18,6 +18,9 @@
|
||||||
-- }
|
-- }
|
||||||
|
|
||||||
--- Option 2:
|
--- Option 2:
|
||||||
|
|
||||||
|
--- Set implementation for Lua.
|
||||||
|
-- @class worldeditadditions_core.Set
|
||||||
local Set = {}
|
local Set = {}
|
||||||
Set.__index = Set
|
Set.__index = Set
|
||||||
Set.__newindex = function(tbl, key, value)
|
Set.__newindex = function(tbl, key, value)
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
local Vector3 = wea_c.Vector3
|
local Vector3 = wea_c.Vector3
|
||||||
|
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core.terrain
|
||||||
|
|
||||||
|
|
||||||
--- Applies changes to a heightmap to a Voxel Manipulator data block.
|
--- Applies changes to a heightmap to a Voxel Manipulator data block.
|
||||||
-- @param pos1 vector Position 1 of the defined region
|
-- @param pos1 vector Position 1 of the defined region
|
||||||
-- @param pos2 vector Position 2 of the defined region
|
-- @param pos2 vector Position 2 of the defined region
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
local Vector3 = wea_c.Vector3
|
local Vector3 = wea_c.Vector3
|
||||||
|
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core.terrain
|
||||||
|
|
||||||
--- Calculates a normal map for the given heightmap.
|
--- Calculates a normal map for the given heightmap.
|
||||||
-- Caution: This method (like worldeditadditions.make_heightmap) works on
|
-- Caution: This method (like worldeditadditions.make_heightmap) works on
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
local Vector3 = wea_c.Vector3
|
local Vector3 = wea_c.Vector3
|
||||||
|
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core.terrain
|
||||||
|
|
||||||
--- Converts a 2d heightmap into slope values in radians.
|
--- Converts a 2d heightmap into slope values in radians.
|
||||||
-- Convert a radians to degrees by doing (radians*math.pi) / 180 for display,
|
-- Convert a radians to degrees by doing (radians*math.pi) / 180 for display,
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
|
|
||||||
|
--- Functions for working with 2D terrain maps.
|
||||||
|
-- @namespace worldeditadditions_core.terrain
|
||||||
local terrain = {
|
local terrain = {
|
||||||
make_heightmap = dofile(wea_c.modpath.."/utils/terrain/make_heightmap.lua"),
|
make_heightmap = dofile(wea_c.modpath.."/utils/terrain/make_heightmap.lua"),
|
||||||
calculate_normals = dofile(wea_c.modpath.."/utils/terrain/calculate_normals.lua"),
|
calculate_normals = dofile(wea_c.modpath.."/utils/terrain/calculate_normals.lua"),
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
local wea_c = worldeditadditions_core
|
local wea_c = worldeditadditions_core
|
||||||
local Vector3 = wea_c.Vector3
|
local Vector3 = wea_c.Vector3
|
||||||
|
|
||||||
|
---
|
||||||
|
-- @module worldeditadditions_core.terrain
|
||||||
|
|
||||||
--- Given a manip object and associates, generates a 2D x/z heightmap.
|
--- Given a manip object and associates, generates a 2D x/z heightmap.
|
||||||
-- Note that pos1 and pos2 should have already been pushed through
|
-- Note that pos1 and pos2 should have already been pushed through
|
||||||
|
|
Loading…
Reference in a new issue