-
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
....unfortunately, it doesn't work yet. Next up is a frankly ridiculous number of print()s to figure out what's going on here
- Loading branch information
Showing
9 changed files
with
168 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
local core = worldeditadditions_core | ||
local Vector3 = core.Vector3 | ||
|
||
|
||
-- ██████ ██████ ████████ █████ ████████ ███████ | ||
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ | ||
-- ██████ ██ ██ ██ ███████ ██ █████ | ||
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ | ||
-- ██ ██ ██████ ██ ██ ██ ██ ███████ | ||
|
||
worldeditadditions_core.register_command("orient+", { | ||
params = "<axis> <degrees> [<axis> <degrees> ...]", | ||
description = "Rotates nodes in the defined region around the given axis by the given number of degrees. Angles are not limited to 90-degree increments, but rounding is done at the end of all calculations because rotating blocks by non-cardinal directions is not supported by the Minetest engine. When multiple axes and angles are specified, these transformations are applied in order. Note that some nodes do not have support for orientation.", | ||
privs = { worldedit = true }, | ||
require_pos = 2, | ||
parse = function (params_text) | ||
if not params_text then params_text = "" end | ||
local parts = core.split_shell(params_text) | ||
|
||
print("DEBUG:rotate/parse parts", core.inspect(parts)) | ||
|
||
local mode_store | ||
local mode = "AXIS" | ||
local success, axis_next, angle | ||
|
||
-- TODO this rotlist parser is duplicated in the //rotate+ command - deduplicate it. | ||
local rotlist = {} | ||
|
||
for i,part in ipairs(parts) do | ||
if mode == "AXIS" then | ||
-- TODO: Somehow move this parsing ----> main func to get player reference to allow for relative stuff | ||
success, axis_next = core.parse.axes_rotation.axis_name(part) | ||
if not success then return success, axis_next end | ||
mode = "ANGLE" | ||
elseif mode == "ANGLE" then | ||
angle = part | ||
|
||
-- 1: Determine if radians; strip suffix | ||
local pos_rad = part:find("ra?d?$") | ||
if pos_rad then | ||
angle = angle:sub(1, pos_rad-1) | ||
end | ||
|
||
-- 2: Parse as number | ||
angle = tonumber(angle) | ||
if not angle then | ||
return false, "Error: Expected numerical angle value, but found '"..tostring(part).."'." | ||
end | ||
|
||
-- 3: Convert degrees → radians | ||
if not pos_rad then | ||
-- We have degrees! Convert em to radians 'cauuse mathematics | ||
angle = math.rad(angle) | ||
end | ||
|
||
-- 4: Add to rotlist | ||
table.insert(rotlist, { | ||
axis = axis_next, | ||
rad = angle | ||
}) | ||
|
||
-- 5: Change mode and continue | ||
mode = "AXIS" | ||
else | ||
return false, "Error: Unknown parsing mode "..tostring(mode)..". This is a bug." | ||
end | ||
end | ||
|
||
print("DEBUG:orient/parse ROTLIST", core.inspect(rotlist)) | ||
|
||
return true, rotlist | ||
end, | ||
nodes_needed = function(name, _rotlist) | ||
return Vector3.volume(core.pos.get1(name), core.pos.get2(name)) | ||
end, | ||
func = function(name, rotlist) | ||
local start_time = core.get_ms_time() | ||
------------------------------------------------- | ||
|
||
local pos1, pos2 = core.pos.get12(name) | ||
|
||
local success, stats = worldeditadditions.orient( | ||
pos1, pos2, | ||
rotlist | ||
) | ||
if not success then return success, stats end | ||
|
||
------------------------------------------------- | ||
local time_taken = core.get_ms_time() - start_time | ||
|
||
|
||
minetest.log("action", name .. " used //orient at "..pos1.." - "..pos2..", reorienting "..stats.count.." nodes in "..time_taken.."s") | ||
return true, stats.count.." nodes reoriented through "..tostring(#rotlist).." rotations in "..core.format.human_time(time_taken) | ||
end | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters