#include "map.h"
#include "main.h" // For g_settings and g_texturesource
#include "content_mapblock.h"
+#include "settings.h"
void MeshMakeData::fill(u32 daynight_ratio, MapBlock *block)
{
*/
// Get map
- NodeContainer *parentcontainer = block->getParent();
- // This will only work if the parent is the map
- assert(parentcontainer->nodeContainerId() == NODECONTAINER_ID_MAP);
- // OK, we have the map!
- Map *map = (Map*)parentcontainer;
+ Map *map = block->getParent();
for(u16 i=0; i<6; i++)
{
}
}
-inline video::SColor lightColor(u8 alpha, u8 light)
+video::SColor MapBlock_LightColor(u8 alpha, u8 light)
{
+#if 0
return video::SColor(alpha,light,light,light);
+#endif
+ //return video::SColor(alpha,light,light,MYMAX(0, (s16)light-25)+25);
+ /*return video::SColor(alpha,light,light,MYMAX(0,
+ pow((float)light/255.0, 0.8)*255.0));*/
+#if 1
+ // Emphase blue a bit in darker places
+ float lim = 80;
+ float power = 0.8;
+ if(light > lim)
+ return video::SColor(alpha,light,light,light);
+ else
+ return video::SColor(alpha,light,light,MYMAX(0,
+ pow((float)light/lim, power)*lim));
+#endif
}
struct FastFace
float w = tile.texture.size.X;
float h = tile.texture.size.Y;
- /*video::SColor c = lightColor(alpha, li);
+ /*video::SColor c = MapBlock_LightColor(alpha, li);
face.vertices[0] = video::S3DVertex(vertex_pos[0], v3f(0,1,0), c,
core::vector2d<f32>(x0+w*abs_scale, y0+h));
core::vector2d<f32>(x0+w*abs_scale, y0));*/
face.vertices[0] = video::S3DVertex(vertex_pos[0], v3f(0,1,0),
- lightColor(alpha, li0),
+ MapBlock_LightColor(alpha, li0),
core::vector2d<f32>(x0+w*abs_scale, y0+h));
face.vertices[1] = video::S3DVertex(vertex_pos[1], v3f(0,1,0),
- lightColor(alpha, li1),
+ MapBlock_LightColor(alpha, li1),
core::vector2d<f32>(x0, y0+h));
face.vertices[2] = video::S3DVertex(vertex_pos[2], v3f(0,1,0),
- lightColor(alpha, li2),
+ MapBlock_LightColor(alpha, li2),
core::vector2d<f32>(x0, y0));
face.vertices[3] = video::S3DVertex(vertex_pos[3], v3f(0,1,0),
- lightColor(alpha, li3),
+ MapBlock_LightColor(alpha, li3),
core::vector2d<f32>(x0+w*abs_scale, y0));
face.tile = tile;
return spec;
}
-u8 getNodeContent(v3s16 p, MapNode mn, NodeModMap &temp_mods)
+content_t getNodeContent(v3s16 p, MapNode mn, NodeModMap &temp_mods)
{
/*
Check temporary modifications on this node
}
}
- return mn.d;
+ return mn.getContent();
}
v3s16 dirs8[8] = {
for(u32 i=0; i<8; i++)
{
MapNode n = vmanip.getNodeNoEx(p - dirs8[i]);
- if(content_features(n.d).param_type == CPT_LIGHT)
+ if(content_features(n).param_type == CPT_LIGHT
+ // Fast-style leaves look better this way
+ && content_features(n).solidness != 2)
{
light += decode_light(n.getLightBlend(daynight_ratio));
light_count++;
}
else
{
- if(n.d != CONTENT_IGNORE)
+ if(n.getContent() != CONTENT_IGNORE)
ambient_occlusion++;
}
}
TileSpec tile1 = getNodeTile(n1, p + face_dir, -face_dir, temp_mods);
// This is hackish
- u8 content0 = getNodeContent(p, n0, temp_mods);
- u8 content1 = getNodeContent(p + face_dir, n1, temp_mods);
+ content_t content0 = getNodeContent(p, n0, temp_mods);
+ content_t content1 = getNodeContent(p + face_dir, n1, temp_mods);
u8 mf = face_contents(content0, content1);
if(mf == 0)
u16 continuous_tiles_count = 0;
- bool makes_face;
+ bool makes_face = false;
v3s16 p_corrected;
v3s16 face_dir_corrected;
- u8 lights[4];
+ u8 lights[4] = {0,0,0,0};
TileSpec tile;
getTileInfo(blockpos_nodes, p, face_dir, daynight_ratio,
vmanip, temp_mods, smooth_lighting,
/*
Some settings
*/
- //bool new_style_water = g_settings.getBool("new_style_water");
- //bool new_style_leaves = g_settings.getBool("new_style_leaves");
- bool smooth_lighting = g_settings.getBool("smooth_lighting");
+ //bool new_style_water = g_settings->getBool("new_style_water");
+ //bool new_style_leaves = g_settings->getBool("new_style_leaves");
+ bool smooth_lighting = g_settings->getBool("smooth_lighting");
/*
We are including the faces of the trailing edges of the block.