aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWuzzy <wuzzy2@mail.ru>2021-04-28 06:38:47 +0000
committerGitHub <noreply@github.com>2021-04-28 08:38:47 +0200
commit228f1c67704ab8014d30a3301bd15a1a88324ce0 (patch)
treeebd7265d7d8dca391a41a4ba9501f14fe102ecfc
parent734fb2c811cdb0c26153c2bd5b62e458343963e7 (diff)
downloadminetest-228f1c67704ab8014d30a3301bd15a1a88324ce0.tar.gz
minetest-228f1c67704ab8014d30a3301bd15a1a88324ce0.tar.bz2
minetest-228f1c67704ab8014d30a3301bd15a1a88324ce0.zip
Fix rotation for falling mesh degrotate nodes (#11159)
-rw-r--r--builtin/game/falling.lua8
-rw-r--r--games/devtest/mods/experimental/commands.lua8
-rw-r--r--games/devtest/mods/testnodes/drawtypes.lua13
3 files changed, 20 insertions, 9 deletions
diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua
index 1f0a63993..2cc0d8fac 100644
--- a/builtin/game/falling.lua
+++ b/builtin/game/falling.lua
@@ -205,6 +205,14 @@ core.register_entity(":__builtin:falling_node", {
end
end
self.object:set_rotation({x=pitch, y=yaw, z=roll})
+ elseif (def.drawtype == "mesh" and def.paramtype2 == "degrotate") then
+ local p2 = (node.param2 - (def.place_param2 or 0)) % 240
+ local yaw = (p2 / 240) * (math.pi * 2)
+ self.object:set_yaw(yaw)
+ elseif (def.drawtype == "mesh" and def.paramtype2 == "colordegrotate") then
+ local p2 = (node.param2 % 32 - (def.place_param2 or 0) % 32) % 24
+ local yaw = (p2 / 24) * (math.pi * 2)
+ self.object:set_yaw(yaw)
end
end
end,
diff --git a/games/devtest/mods/experimental/commands.lua b/games/devtest/mods/experimental/commands.lua
index 8bfa467e1..e42ae954d 100644
--- a/games/devtest/mods/experimental/commands.lua
+++ b/games/devtest/mods/experimental/commands.lua
@@ -131,10 +131,11 @@ local function place_nodes(param)
p2_max = 63
elseif def.paramtype2 == "leveled" then
p2_max = 127
- elseif def.paramtype2 == "degrotate" and def.drawtype == "plantlike" then
- p2_max = 179
+ elseif def.paramtype2 == "degrotate" and (def.drawtype == "plantlike" or def.drawtype == "mesh") then
+ p2_max = 239
elseif def.paramtype2 == "colorfacedir" or
def.paramtype2 == "colorwallmounted" or
+ def.paramtype2 == "colordegrotate" or
def.paramtype2 == "color" then
p2_max = 255
end
@@ -143,7 +144,8 @@ local function place_nodes(param)
-- Skip undefined param2 values
if not ((def.paramtype2 == "meshoptions" and p2 % 8 > 4) or
(def.paramtype2 == "colorwallmounted" and p2 % 8 > 5) or
- (def.paramtype2 == "colorfacedir" and p2 % 32 > 23)) then
+ ((def.paramtype2 == "colorfacedir" or def.paramtype2 == "colordegrotate")
+ and p2 % 32 > 23)) then
minetest.set_node(pos, { name = itemstring, param2 = p2 })
nodes_placed = nodes_placed + 1
diff --git a/games/devtest/mods/testnodes/drawtypes.lua b/games/devtest/mods/testnodes/drawtypes.lua
index 3bf631714..2bc7ec2e3 100644
--- a/games/devtest/mods/testnodes/drawtypes.lua
+++ b/games/devtest/mods/testnodes/drawtypes.lua
@@ -254,11 +254,11 @@ minetest.register_node("testnodes:mesh_degrotate", {
drawtype = "mesh",
paramtype = "light",
paramtype2 = "degrotate",
- mesh = "testnodes_pyramid.obj",
+ mesh = "testnodes_ocorner.obj",
tiles = { "testnodes_mesh_stripes2.png" },
on_rightclick = rotate_on_rightclick,
- place_param2 = 7,
+ place_param2 = 10, -- 15°
sunlight_propagates = true,
groups = { dig_immediate = 3 },
})
@@ -266,14 +266,15 @@ minetest.register_node("testnodes:mesh_degrotate", {
minetest.register_node("testnodes:mesh_colordegrotate", {
description = S("Color Degrotate Mesh Drawtype Test Node"),
drawtype = "mesh",
+ paramtype = "light",
paramtype2 = "colordegrotate",
palette = "testnodes_palette_facedir.png",
- mesh = "testnodes_pyramid.obj",
- tiles = { "testnodes_mesh_stripes2.png" },
+ mesh = "testnodes_ocorner.obj",
+ tiles = { "testnodes_mesh_stripes3.png" },
on_rightclick = rotate_on_rightclick,
- -- color index 1, 7 steps rotated
- place_param2 = 1 * 2^5 + 7,
+ -- color index 1, 1 step (=15°) rotated
+ place_param2 = 1 * 2^5 + 1,
sunlight_propagates = true,
groups = { dig_immediate = 3 },
})