0
0
Fork 0

Rotate sign text entity as well

This commit is contained in:
Wuzzy 2017-07-26 04:40:44 +02:00
parent d667177d6b
commit 273c2d3d51
1 changed files with 31 additions and 16 deletions

View File

@ -122,21 +122,34 @@ end
local n = 7/16 - 1/128
local signs = {
local signtext_info_wall = {
{delta = {x = 0, y = 0, z = n}, yaw = 0},
{delta = {x = n, y = 0, z = 0}, yaw = math.pi / -2},
{delta = {x = 0, y = 0, z = -n}, yaw = math.pi},
{delta = {x = -n, y = 0, z = 0}, yaw = math.pi / 2},
}
local m = 1/16 + 1/128
local signtext_info_standing = {}
local signs_yard = {
{delta = {x = 0, y = 5/32, z = -m}, yaw = 0},
{delta = {x = -m, y = 5/32, z = 0}, yaw = math.pi / -2},
{delta = {x = 0, y = 5/32, z = m}, yaw = math.pi},
{delta = {x = m, y = 5/32, z = 0}, yaw = math.pi / 2},
}
local m = -1/16 + 1/64
for rot=0, 15 do
local yaw = math.pi*2 - (((math.pi*2) / 16) * rot)
local delta = vector.multiply(minetest.yaw_to_dir(yaw), m)
delta.y = 5/32
table.insert(signtext_info_standing, { delta = delta, yaw = yaw })
end
local function get_rotation_level(facedir, nodename)
local rl = facedir * 4
if nodename == "mcl_signs:standing_sign22_5" then
rl = rl + 1
elseif nodename == "mcl_signs:standing_sign45" then
rl = rl + 2
elseif nodename == "mcl_signs:standing_sign67_5" then
rl = rl + 3
end
return rl
end
local sign_groups = {handy=1,axey=1, flammable=1, deco_block=1, material_wood=1, attached_node=1}
@ -172,18 +185,20 @@ local update_sign = function(pos, fields, sender)
-- if there is no entity
local sign_info
local nn = minetest.get_node(pos).name
local n = minetest.get_node(pos)
local nn = n.name
if nn == "mcl_signs:standing_sign" or nn == "mcl_signs:standing_sign22_5" or nn == "mcl_signs:standing_sign45" or nn == "mcl_signs:standing_sign67_5" then
sign_info = signs_yard[minetest.get_node(pos).param2 + 1]
sign_info = signtext_info_standing[get_rotation_level(n.param2, nn) + 1]
elseif nn == "mcl_signs:wall_sign" then
sign_info = signs[minetest.get_node(pos).param2 + 1]
sign_info = signtext_info_wall[n.param2 + 1]
end
if sign_info == nil then
return
end
local text_entity = minetest.add_entity({x = pos.x + sign_info.delta.x,
y = pos.y + sign_info.delta.y,
z = pos.z + sign_info.delta.z}, "mcl_signs:text")
local text_entity = minetest.add_entity({
x = pos.x + sign_info.delta.x,
y = pos.y + sign_info.delta.y,
z = pos.z + sign_info.delta.z}, "mcl_signs:text")
if nn == "mcl_signs:standing_sign22_5" then
sign_info.yaw = sign_info.yaw + math.pi / 8
elseif nn == "mcl_signs:standing_sign45" then
@ -309,7 +324,7 @@ minetest.register_node("mcl_signs:wall_sign", {
if not success then
return itemstack
end
sign_info = signs_yard[fdir + 1]
sign_info = signtext_info_standing[rotation_level + 1]
-- Side
else
-- Wall sign
@ -318,7 +333,7 @@ minetest.register_node("mcl_signs:wall_sign", {
if not success then
return itemstack
end
sign_info = signs[fdir + 1]
sign_info = signtext_info_wall[fdir + 1]
end
local text = minetest.add_entity({