diff options
author | Wuzzy <wuzzy2@mail.ru> | 2021-04-28 06:38:47 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-28 08:38:47 +0200 |
commit | 228f1c67704ab8014d30a3301bd15a1a88324ce0 (patch) | |
tree | ebd7265d7d8dca391a41a4ba9501f14fe102ecfc | |
parent | 734fb2c811cdb0c26153c2bd5b62e458343963e7 (diff) | |
download | minetest-228f1c67704ab8014d30a3301bd15a1a88324ce0.tar.gz minetest-228f1c67704ab8014d30a3301bd15a1a88324ce0.tar.bz2 minetest-228f1c67704ab8014d30a3301bd15a1a88324ce0.zip |
Fix rotation for falling mesh degrotate nodes (#11159)
-rw-r--r-- | builtin/game/falling.lua | 8 | ||||
-rw-r--r-- | games/devtest/mods/experimental/commands.lua | 8 | ||||
-rw-r--r-- | games/devtest/mods/testnodes/drawtypes.lua | 13 |
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 }, }) |