Skip to content

Commit f48f686

Browse files
committedOct 2, 2014
Add optional framed glasslike drawtype
1 parent e9c9b66 commit f48f686

9 files changed

+37
-14
lines changed
 

‎builtin/mainmenu/tab_settings.lua

+10-10
Original file line numberDiff line numberDiff line change
@@ -132,18 +132,18 @@ local function formspec(tabview, name, tabdata)
132132
local tab_string =
133133
"vertlabel[0,-0.25;" .. fgettext("SETTINGS") .. "]" ..
134134
"box[0.75,0;3.25,4;#999999]" ..
135-
"checkbox[1,0;cb_fancy_trees;".. fgettext("Fancy Trees") .. ";"
136-
.. dump(core.setting_getbool("new_style_leaves")) .. "]"..
137-
"checkbox[1,0.5;cb_smooth_lighting;".. fgettext("Smooth Lighting")
135+
"checkbox[1,0;cb_smooth_lighting;".. fgettext("Smooth Lighting")
138136
.. ";".. dump(core.setting_getbool("smooth_lighting")) .. "]"..
137+
"checkbox[1,0.5;cb_particles;".. fgettext("Enable Particles") .. ";"
138+
.. dump(core.setting_getbool("enable_particles")) .. "]"..
139139
"checkbox[1,1;cb_3d_clouds;".. fgettext("3D Clouds") .. ";"
140140
.. dump(core.setting_getbool("enable_3d_clouds")) .. "]"..
141-
"checkbox[1,1.5;cb_opaque_water;".. fgettext("Opaque Water") .. ";"
141+
"checkbox[1,1.5;cb_fancy_trees;".. fgettext("Fancy Trees") .. ";"
142+
.. dump(core.setting_getbool("new_style_leaves")) .. "]"..
143+
"checkbox[1,2.0;cb_opaque_water;".. fgettext("Opaque Water") .. ";"
142144
.. dump(core.setting_getbool("opaque_water")) .. "]"..
143-
"checkbox[1,2.0;cb_pre_ivis;".. fgettext("Preload item visuals") .. ";"
144-
.. dump(core.setting_getbool("preload_item_visuals")) .. "]"..
145-
"checkbox[1,2.5;cb_particles;".. fgettext("Enable Particles") .. ";"
146-
.. dump(core.setting_getbool("enable_particles")) .. "]"..
145+
"checkbox[1,2.5;cb_connected_glass;".. fgettext("Connected Glass") .. ";"
146+
.. dump(core.setting_getbool("connected_glass")) .. "]"..
147147
"dropdown[1,3.25;3;dd_video_driver;"
148148
.. video_driver_string .. ";" .. current_video_driver_idx .. "]" ..
149149
"tooltip[dd_video_driver;" ..
@@ -259,8 +259,8 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
259259
end
260260
return true
261261
end
262-
if fields["cb_pre_ivis"] then
263-
core.setting_set("preload_item_visuals", fields["cb_pre_ivis"])
262+
if fields["cb_connected_glass"] then
263+
core.setting_set("connected_glass", fields["cb_connected_glass"])
264264
return true
265265
end
266266
if fields["cb_particles"] then

‎doc/lua_api.txt

+4-2
Original file line numberDiff line numberDiff line change
@@ -406,8 +406,7 @@ Nodes can also contain extra data. See "Node Metadata".
406406

407407
Node drawtypes
408408
---------------
409-
There are a bunch of different looking node types. These are mostly just
410-
copied from Minetest 0.3; more may be made in the future.
409+
There are a bunch of different looking node types.
411410

412411
Look for examples in games/minimal or games/minetest_game.
413412

@@ -417,6 +416,7 @@ Look for examples in games/minimal or games/minetest_game.
417416
- flowingliquid
418417
- glasslike
419418
- glasslike_framed
419+
- glasslike_framed_optional
420420
- allfaces
421421
- allfaces_optional
422422
- torchlike
@@ -427,6 +427,8 @@ Look for examples in games/minimal or games/minetest_game.
427427
- raillike
428428
- nodebox -- See below. EXPERIMENTAL
429429

430+
*_optional drawtypes need less rendering time if deactivated (always client side)
431+
430432
Node boxes
431433
-----------
432434
Node selection boxes are defined using "node boxes"

‎minetest.conf.example

+2
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@
101101
#liquid_update = 1.0
102102
# Enable nice leaves; disable for speed
103103
#new_style_leaves = true
104+
# Connects glass if supported by node
105+
#connected_glass = false
104106
# Enable smooth lighting with simple ambient occlusion;
105107
# disable for speed or for different looks.
106108
#smooth_lighting = true

‎src/content_mapblock.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,10 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
794794
collector.append(tile, vertices, 4, indices, 6);
795795
}
796796
break;}
797+
case NDT_GLASSLIKE_FRAMED_OPTIONAL:
798+
// This is always pre-converted to something else
799+
assert(0);
800+
break;
797801
case NDT_GLASSLIKE_FRAMED:
798802
{
799803
static const v3s16 dirs[6] = {

‎src/defaultsettings.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ void set_default_settings(Settings *settings)
100100
settings->setDefault("view_bobbing", "true");
101101
settings->setDefault("new_style_water", "false");
102102
settings->setDefault("new_style_leaves", "true");
103+
settings->setDefault("connected_glass", "false");
103104
settings->setDefault("smooth_lighting", "true");
104105
settings->setDefault("texture_path", "");
105106
settings->setDefault("shader_path", "");

‎src/nodedef.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,7 @@ class CNodeDefManager: public IWritableNodeDefManager
607607

608608
bool new_style_water = g_settings->getBool("new_style_water");
609609
bool new_style_leaves = g_settings->getBool("new_style_leaves");
610+
bool connected_glass = g_settings->getBool("connected_glass");
610611
bool opaque_water = g_settings->getBool("opaque_water");
611612
bool enable_shaders = g_settings->getBool("enable_shaders");
612613
bool enable_bumpmapping = g_settings->getBool("enable_bumpmapping");
@@ -666,6 +667,15 @@ class CNodeDefManager: public IWritableNodeDefManager
666667
f->solidness = 0;
667668
f->visual_solidness = 1;
668669
break;
670+
case NDT_GLASSLIKE_FRAMED_OPTIONAL:
671+
f->solidness = 0;
672+
f->visual_solidness = 1;
673+
if (connected_glass) {
674+
f->drawtype = NDT_GLASSLIKE_FRAMED;
675+
} else {
676+
f->drawtype = NDT_GLASSLIKE;
677+
}
678+
break;
669679
case NDT_ALLFACES:
670680
f->solidness = 0;
671681
f->visual_solidness = 1;

‎src/nodedef.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,9 @@ enum NodeDrawType
149149
NDT_GLASSLIKE_FRAMED, // Glass-like, draw connected frames and all all
150150
// visible faces
151151
// uses 2 textures, one for frames, second for faces
152-
NDT_FIRELIKE, // Draw faces slightly rotated and only on connecting nodes
152+
NDT_FIRELIKE, // Draw faces slightly rotated and only on connecting nodes,
153+
NDT_GLASSLIKE_FRAMED_OPTIONAL, // enabled -> connected, disabled -> Glass-like
154+
// uses 2 textures, one for frames, second for faces
153155
};
154156

155157
#define CF_SPECIAL_COUNT 6

‎src/script/cpp_api/s_node.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ struct EnumString ScriptApiNode::es_DrawType[] =
3535
{NDT_FLOWINGLIQUID, "flowingliquid"},
3636
{NDT_GLASSLIKE, "glasslike"},
3737
{NDT_GLASSLIKE_FRAMED, "glasslike_framed"},
38+
{NDT_GLASSLIKE_FRAMED_OPTIONAL, "glasslike_framed_optional"},
3839
{NDT_ALLFACES, "allfaces"},
3940
{NDT_ALLFACES_OPTIONAL, "allfaces_optional"},
4041
{NDT_TORCHLIKE, "torchlike"},

‎src/shader.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,8 @@ ShaderInfo generate_shader(std::string name, u8 material_type, u8 drawtype,
645645
"NDT_RAILLIKE",
646646
"NDT_NODEBOX",
647647
"NDT_GLASSLIKE_FRAMED",
648-
"NDT_FIRELIKE"
648+
"NDT_FIRELIKE",
649+
"NDT_GLASSLIKE_FRAMED_OPTIONAL"
649650
};
650651

651652
for (int i = 0; i < 14; i++){

0 commit comments

Comments
 (0)
Please sign in to comment.