forked from Mirrorlandia_minetest/minetest
Lava is now better visible inside water. (a crappy hack)
This commit is contained in:
parent
e4f443a57a
commit
efd8dabd91
@ -448,12 +448,6 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
|||||||
{
|
{
|
||||||
air_count++;
|
air_count++;
|
||||||
}
|
}
|
||||||
/*// Air is liquid level 0
|
|
||||||
else if(content == CONTENT_AIR)
|
|
||||||
{
|
|
||||||
cornerlevel += -0.5*BS;
|
|
||||||
valid_count++;
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
if(air_count >= 2)
|
if(air_count >= 2)
|
||||||
cornerlevel = -0.5*BS;
|
cornerlevel = -0.5*BS;
|
||||||
@ -490,17 +484,20 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
|||||||
neighbor_flags[dir] & neighborflag_top_is_same_liquid)
|
neighbor_flags[dir] & neighborflag_top_is_same_liquid)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
u8 neighbor_content = neighbor_contents[dir];
|
content_t neighbor_content = neighbor_contents[dir];
|
||||||
|
|
||||||
// Don't draw face if neighbor is not air or liquid
|
// Don't draw face if neighbor is not air or liquid
|
||||||
if(neighbor_content != CONTENT_AIR
|
if(neighbor_content != CONTENT_AIR
|
||||||
&& neighbor_content != c_source)
|
&& content_liquid(neighbor_content) == false)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
bool neighbor_is_liquid = (neighbor_content == c_source);
|
bool neighbor_is_same_liquid = (neighbor_content == c_source
|
||||||
|
|| neighbor_content == c_flowing);
|
||||||
|
|
||||||
// Don't draw any faces if neighbor is liquid and top is liquid
|
// Don't draw any faces if neighbor same is liquid and top is
|
||||||
if(neighbor_is_liquid == true && top_is_same_liquid == false)
|
// same liquid
|
||||||
|
if(neighbor_is_same_liquid == true
|
||||||
|
&& top_is_same_liquid == false)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
video::S3DVertex vertices[4] =
|
video::S3DVertex vertices[4] =
|
||||||
@ -541,7 +538,7 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
|||||||
If neighbor is liquid, lower border of face is corner
|
If neighbor is liquid, lower border of face is corner
|
||||||
liquid levels
|
liquid levels
|
||||||
*/
|
*/
|
||||||
if(neighbor_is_liquid)
|
if(neighbor_is_same_liquid)
|
||||||
{
|
{
|
||||||
vertices[0].Pos.Y = corner_levels[side_corners[i][1]];
|
vertices[0].Pos.Y = corner_levels[side_corners[i][1]];
|
||||||
vertices[1].Pos.Y = corner_levels[side_corners[i][0]];
|
vertices[1].Pos.Y = corner_levels[side_corners[i][0]];
|
||||||
@ -567,6 +564,13 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
|||||||
if(dir == v3s16(1,0,-0))
|
if(dir == v3s16(1,0,-0))
|
||||||
vertices[j].Pos.rotateXZBy(-90);
|
vertices[j].Pos.rotateXZBy(-90);
|
||||||
|
|
||||||
|
// Do this to not cause glitches when two liquids are
|
||||||
|
// side-by-side
|
||||||
|
if(neighbor_is_same_liquid == false){
|
||||||
|
vertices[j].Pos.X *= 0.98;
|
||||||
|
vertices[j].Pos.Z *= 0.98;
|
||||||
|
}
|
||||||
|
|
||||||
vertices[j].Pos += intToFloat(p + blockpos_nodes, BS);
|
vertices[j].Pos += intToFloat(p + blockpos_nodes, BS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,6 +370,7 @@ void content_mapnode_init()
|
|||||||
f->param_type = CPT_LIGHT;
|
f->param_type = CPT_LIGHT;
|
||||||
f->light_propagates = true;
|
f->light_propagates = true;
|
||||||
f->solidness = 0; // Drawn separately, makes no faces
|
f->solidness = 0; // Drawn separately, makes no faces
|
||||||
|
f->visual_solidness = 1;
|
||||||
f->walkable = false;
|
f->walkable = false;
|
||||||
f->pointable = false;
|
f->pointable = false;
|
||||||
f->diggable = false;
|
f->diggable = false;
|
||||||
@ -449,6 +450,7 @@ void content_mapnode_init()
|
|||||||
f->light_propagates = false;
|
f->light_propagates = false;
|
||||||
f->light_source = LIGHT_MAX-1;
|
f->light_source = LIGHT_MAX-1;
|
||||||
f->solidness = 0; // Drawn separately, makes no faces
|
f->solidness = 0; // Drawn separately, makes no faces
|
||||||
|
f->visual_solidness = 2;
|
||||||
f->walkable = false;
|
f->walkable = false;
|
||||||
f->pointable = false;
|
f->pointable = false;
|
||||||
f->diggable = false;
|
f->diggable = false;
|
||||||
|
@ -121,6 +121,7 @@ struct ContentFeatures
|
|||||||
bool light_propagates;
|
bool light_propagates;
|
||||||
bool sunlight_propagates;
|
bool sunlight_propagates;
|
||||||
u8 solidness; // Used when choosing which face is drawn
|
u8 solidness; // Used when choosing which face is drawn
|
||||||
|
u8 visual_solidness; // When solidness=0, this tells how it looks like
|
||||||
// This is used for collision detection.
|
// This is used for collision detection.
|
||||||
// Also for general solidness queries.
|
// Also for general solidness queries.
|
||||||
bool walkable;
|
bool walkable;
|
||||||
@ -181,6 +182,7 @@ struct ContentFeatures
|
|||||||
light_propagates = false;
|
light_propagates = false;
|
||||||
sunlight_propagates = false;
|
sunlight_propagates = false;
|
||||||
solidness = 2;
|
solidness = 2;
|
||||||
|
visual_solidness = 0;
|
||||||
walkable = true;
|
walkable = true;
|
||||||
pointable = true;
|
pointable = true;
|
||||||
diggable = true;
|
diggable = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user