Skip to content

Commit 9fda51b

Browse files
authored
Insulated double corner (#524)
* Add insulated double corner * Make single corner curved to match double corner * Remove obsolete regular corner textures
1 parent 4750925 commit 9fda51b

File tree

7 files changed

+405
-21
lines changed

7 files changed

+405
-21
lines changed

mesecons_extrawires/corner.lua

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
11
local screwdriver_exists = minetest.global_exists("screwdriver")
22

3-
local corner_nodebox = {
4-
type = "fixed",
5-
-- ±0.001 is to prevent z-fighting
6-
fixed = {{ -16/32-0.001, -17/32, -3/32, 0, -13/32, 3/32 },
7-
{ -3/32, -17/32, -16/32+0.001, 3/32, -13/32, 3/32}}
8-
}
9-
103
local corner_selectionbox = {
114
type = "fixed",
125
fixed = { -16/32, -16/32, -16/32, 5/32, -12/32, 5/32 },
@@ -25,14 +18,11 @@ local corner_get_rules = function (node)
2518
end
2619

2720
minetest.register_node("mesecons_extrawires:corner_on", {
28-
drawtype = "nodebox",
21+
drawtype = "mesh",
22+
mesh = "mesecons_extrawires_corner.obj",
2923
tiles = {
30-
"jeija_insulated_wire_curved_tb_on.png",
31-
"jeija_insulated_wire_curved_tb_on.png^[transformR270",
32-
"jeija_insulated_wire_sides_on.png",
33-
"jeija_insulated_wire_ends_on.png",
34-
"jeija_insulated_wire_sides_on.png",
35-
"jeija_insulated_wire_ends_on.png"
24+
{ name = "jeija_insulated_wire_sides_on.png", backface_culling = true },
25+
{ name = "jeija_insulated_wire_ends_on.png", backface_culling = true },
3626
},
3727
paramtype = "light",
3828
paramtype2 = "facedir",
@@ -55,15 +45,12 @@ minetest.register_node("mesecons_extrawires:corner_on", {
5545
})
5646

5747
minetest.register_node("mesecons_extrawires:corner_off", {
58-
drawtype = "nodebox",
48+
drawtype = "mesh",
5949
description = "Insulated Mesecon Corner",
50+
mesh = "mesecons_extrawires_corner.obj",
6051
tiles = {
61-
"jeija_insulated_wire_curved_tb_off.png",
62-
"jeija_insulated_wire_curved_tb_off.png^[transformR270",
63-
"jeija_insulated_wire_sides_off.png",
64-
"jeija_insulated_wire_ends_off.png",
65-
"jeija_insulated_wire_sides_off.png",
66-
"jeija_insulated_wire_ends_off.png"
52+
{ name = "jeija_insulated_wire_sides_off.png", backface_culling = true },
53+
{ name = "jeija_insulated_wire_ends_off.png", backface_culling = true },
6754
},
6855
paramtype = "light",
6956
paramtype2 = "facedir",
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
local rotate
2+
if minetest.global_exists("screwdriver") then rotate = screwdriver.rotate_simple end
3+
4+
local doublecorner_selectionbox = {
5+
type = "fixed",
6+
fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 },
7+
}
8+
9+
local rules = {
10+
{
11+
{ x = 1, y = 0, z = 0 },
12+
{ x = 0, y = 0, z = 1 },
13+
},
14+
{
15+
{ x = -1, y = 0, z = 0 },
16+
{ x = 0, y = 0, z = -1 },
17+
},
18+
}
19+
20+
local doublecorner_rules = {}
21+
for k = 1, 4 do
22+
doublecorner_rules[k] = table.copy(rules)
23+
for i, r in ipairs(rules) do
24+
rules[i] = mesecon.rotate_rules_left(r)
25+
end
26+
end
27+
28+
local function doublecorner_get_rules(node)
29+
return doublecorner_rules[node.param2 % 4 + 1]
30+
end
31+
32+
local doublecorner_states = {
33+
"mesecons_extrawires:doublecorner_00",
34+
"mesecons_extrawires:doublecorner_01",
35+
"mesecons_extrawires:doublecorner_10",
36+
"mesecons_extrawires:doublecorner_11",
37+
}
38+
local wire1_states = { "off", "off", "on", "on" }
39+
local wire2_states = { "off", "on", "off", "on" }
40+
41+
for k, state in ipairs(doublecorner_states) do
42+
local w1 = wire1_states[k]
43+
local w2 = wire2_states[k]
44+
local groups = { dig_immediate = 3 }
45+
if k ~= 1 then groups.not_in_creative_inventory = 1 end
46+
minetest.register_node(state, {
47+
drawtype = "mesh",
48+
mesh = "mesecons_extrawires_doublecorner.obj",
49+
description = "Insulated Mesecon Double Corner",
50+
tiles = {
51+
{ name = "jeija_insulated_wire_sides_" .. w1 .. ".png", backface_culling = true },
52+
{ name = "jeija_insulated_wire_ends_" .. w1 .. ".png", backface_culling = true },
53+
{ name = "jeija_insulated_wire_sides_" .. w2 .. ".png", backface_culling = true },
54+
{ name = "jeija_insulated_wire_ends_" .. w2 .. ".png", backface_culling = true },
55+
},
56+
paramtype = "light",
57+
paramtype2 = "facedir",
58+
is_ground_content = false,
59+
walkable = false,
60+
sunlight_propagates = true,
61+
selection_box = doublecorner_selectionbox,
62+
groups = groups,
63+
drop = doublecorner_states[1],
64+
sounds = default.node_sound_defaults(),
65+
mesecons = {
66+
conductor = {
67+
states = doublecorner_states,
68+
rules = doublecorner_get_rules,
69+
},
70+
},
71+
on_blast = mesecon.on_blastnode,
72+
on_rotate = rotate,
73+
})
74+
end
75+
76+
minetest.register_craft({
77+
type = "shapeless",
78+
output = "mesecons_extrawires:doublecorner_00",
79+
recipe = {
80+
"mesecons_extrawires:corner_off",
81+
"mesecons_extrawires:corner_off",
82+
},
83+
})
84+
85+
minetest.register_craft({
86+
type = "shapeless",
87+
output = "mesecons_extrawires:corner_off 2",
88+
recipe = {
89+
"mesecons_extrawires:doublecorner_00",
90+
},
91+
})

mesecons_extrawires/init.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
dofile(minetest.get_modpath("mesecons_extrawires").."/crossover.lua");
22
dofile(minetest.get_modpath("mesecons_extrawires").."/tjunction.lua");
33
dofile(minetest.get_modpath("mesecons_extrawires").."/corner.lua");
4+
dofile(minetest.get_modpath("mesecons_extrawires").."/doublecorner.lua");
45
dofile(minetest.get_modpath("mesecons_extrawires").."/vertical.lua");
56
dofile(minetest.get_modpath("mesecons_extrawires").."/mesewire.lua");
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
# Вершины
2+
# Провод 1
3+
# 1 (ниж. внутр.)
4+
v 0.093750 -0.531250 -0.501000
5+
v 0.093750 -0.531250 -0.331726
6+
v 0.331726 -0.531250 -0.093750
7+
v 0.501000 -0.531250 -0.093750
8+
# 5 (ниж. наруж.)
9+
v -0.093750 -0.531250 -0.501000
10+
v -0.093750 -0.531250 -0.254061
11+
v 0.254061 -0.531250 0.093750
12+
v 0.501000 -0.531250 0.093750
13+
# 9 (верх. внутр.)
14+
v 0.093750 -0.406250 -0.501000
15+
v 0.093750 -0.406250 -0.331726
16+
v 0.331726 -0.406250 -0.093750
17+
v 0.501000 -0.406250 -0.093750
18+
# 13 (верх. наруж.)
19+
v -0.093750 -0.406250 -0.501000
20+
v -0.093750 -0.406250 -0.254061
21+
v 0.254061 -0.406250 0.093750
22+
v 0.501000 -0.406250 0.093750
23+
# Текстурные координаты
24+
# 1 (ниж.)
25+
vt 0.000000 0.406250
26+
vt 0.168274 0.406250
27+
vt 0.331726 0.406250
28+
vt 0.668274 0.406250
29+
vt 0.831726 0.406250
30+
vt 1.000000 0.406250
31+
vt 0.000000 0.593750
32+
vt 0.245939 0.593750
33+
vt 0.254061 0.593750
34+
vt 0.745939 0.593750
35+
vt 0.754061 0.593750
36+
vt 1.000000 0.593750
37+
# 13 (верх.)
38+
vt 0.000000 0.406250
39+
vt 0.245939 0.406250
40+
vt 0.254061 0.406250
41+
vt 0.745939 0.406250
42+
vt 0.754061 0.406250
43+
vt 1.000000 0.406250
44+
vt 0.000000 0.593750
45+
vt 0.168274 0.593750
46+
vt 0.331726 0.593750
47+
vt 0.668274 0.593750
48+
vt 0.831726 0.593750
49+
vt 1.000000 0.593750
50+
# 25 (внутр.)
51+
vt 1.000000 0.093750
52+
vt 0.831726 0.093750
53+
vt 0.668274 0.093750
54+
vt 0.331726 0.093750
55+
vt 0.168274 0.093750
56+
vt 0.000000 0.093750
57+
vt 1.000000 -0.031250
58+
vt 0.831726 -0.031250
59+
vt 0.668274 -0.031250
60+
vt 0.331726 -0.031250
61+
vt 0.168274 -0.031250
62+
vt 0.000000 -0.031250
63+
# 37 (внеш.)
64+
vt 0.000000 -0.031250
65+
vt 0.245939 -0.031250
66+
vt 0.254061 -0.031250
67+
vt 0.745939 -0.031250
68+
vt 0.754061 -0.031250
69+
vt 1.000000 -0.031250
70+
vt 0.000000 0.093750
71+
vt 0.245939 0.093750
72+
vt 0.254061 0.093750
73+
vt 0.745939 0.093750
74+
vt 0.754061 0.093750
75+
vt 1.000000 0.093750
76+
# 49 (торец)
77+
vt 0.406250 -0.031250
78+
vt 0.406250 0.093750
79+
vt 0.593750 -0.031250
80+
vt 0.593750 0.093750
81+
# Нормали
82+
# 1
83+
vn 1.000000 0.000000 0.000000
84+
vn 0.000000 1.000000 0.000000
85+
vn 0.000000 0.000000 1.000000
86+
vn 0.707107 0.000000 0.707107
87+
# 5
88+
vn -1.000000 0.000000 0.000000
89+
vn 0.000000 -1.000000 0.000000
90+
vn 0.000000 0.000000 -1.000000
91+
vn -0.707107 0.000000 -0.707107
92+
# Грани
93+
g Sides1
94+
# Часть 1
95+
f 5/37/1 6/38/1 14/44/1
96+
f 5/37/1 14/44/1 13/43/1
97+
f 13/13/2 14/14/2 10/20/2
98+
f 13/13/2 10/20/2 9/19/2
99+
f 9/25/5 10/26/5 2/32/5
100+
f 9/25/5 2/32/5 1/31/5
101+
f 1/1/6 2/2/6 6/8/6
102+
f 1/1/6 6/8/6 5/7/6
103+
# Часть 2
104+
f 6/39/4 7/40/4 15/46/4
105+
f 6/39/4 15/46/4 14/45/4
106+
f 14/15/2 15/16/2 11/22/2
107+
f 14/15/2 11/22/2 10/21/2
108+
f 10/27/8 11/28/8 3/34/8
109+
f 10/27/8 3/34/8 2/33/8
110+
f 2/3/6 3/4/6 7/10/6
111+
f 2/3/6 7/10/6 6/9/6
112+
# Часть 3
113+
f 7/41/3 8/42/3 16/48/3
114+
f 7/41/3 16/48/3 15/47/3
115+
f 15/17/2 16/18/2 12/24/2
116+
f 15/17/2 12/24/2 11/23/2
117+
f 11/29/7 12/30/7 4/36/7
118+
f 11/29/7 4/36/7 3/35/7
119+
f 3/5/6 4/6/6 8/12/6
120+
f 3/5/6 8/12/6 7/11/6
121+
g Ends1
122+
f 1/49/3 5/51/3 13/52/3
123+
f 1/49/3 13/52/3 9/50/3
124+
f 4/49/1 12/50/1 16/52/1
125+
f 4/49/1 16/52/1 8/51/1

0 commit comments

Comments
 (0)