Minetest-WorldEditAdditions/worldeditadditions/lib/sculpt/scan_static.lua
2023-07-02 20:05:46 +01:00

52 lines
1.8 KiB
Lua

local wea = worldeditadditions
local wea_c = worldeditadditions_core
local Vector3 = wea_c.Vector3
local import_static = dofile(wea.modpath.."/lib/sculpt/import_static.lua")
local function import_filepath(filepath, name, overwrite_existing)
if overwrite_existing and wea.sculpt.brushes[name] ~= nil then
return false, "Error: A brush with the name '"..name.."' already exists."
end
local success, brush, brush_size = import_static(filepath)
if not success then return success, "Error while reading from '"..filepath.."': "..brush end
wea.sculpt.brushes[name] = {
brush = brush,
size = brush_size
}
return true
end
--- Scans the given directory and imports all static brushes found.
-- Static brushes have the file extension ".brush.tsv" (without quotes).
-- @name scan_static
-- @internal
-- @param dirpath string The path to directory that contains the static brushs to import.
-- @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_c.io.scandir_files(dirpath)
local brushes_loaded = 0
local errors = 0
for i, filename in pairs(files) do
if wea_c.str_ends(filename, ".brush.tsv") then
local filepath = dirpath.."/"..filename
local name = filename:gsub(".brush.tsv", "")
local success, msg = import_filepath(filepath, name, overwrite_existing)
if not success then
minetest.log("warning", "[WorldEditAdditions:sculpt] Encountered error when loading brush from '"..filepath.."':"..msg)
end
brushes_loaded = brushes_loaded + 1
end
end
return true, brushes_loaded, errors
end