LuaVoxelManip: Add option to allocate blank data
[oweals/minetest.git] / src / content_mapblock.cpp
index 2584c07790cf9b52e54c06860908262f39db14a3..b84b69629d99082ad6cc490d3da65449e20be7a7 100644 (file)
@@ -1162,15 +1162,16 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
                        u16 l = getInteriorLight(n, 1, nodedef);
                        video::SColor c = MapBlock_LightColor(255, l, f.light_source);
                        
-                       float s = BS / 2;
-                       for(u32 j = 0; j < 2; j++)
+                       float s = BS / 2 * f.visual_scale;
+
+                       for (int j = 0; j < 2; j++)
                        {
                                video::S3DVertex vertices[4] =
                                {
-                                       video::S3DVertex(-s,-s, 0, 0,0,0, c, 0,1),
-                                       video::S3DVertex( s,-s, 0, 0,0,0, c, 1,1),
-                                       video::S3DVertex( s, s, 0, 0,0,0, c, 1,0),
-                                       video::S3DVertex(-s, s, 0, 0,0,0, c, 0,0),
+                                       video::S3DVertex(-s,-BS/2, 0, 0,0,0, c, 0,1),
+                                       video::S3DVertex( s,-BS/2, 0, 0,0,0, c, 1,1),
+                                       video::S3DVertex( s,-BS/2 + s*2,0, 0,0,0, c, 1,0),
+                                       video::S3DVertex(-s,-BS/2 + s*2,0, 0,0,0, c, 0,0),
                                };
 
                                if(j == 0)
@@ -1184,10 +1185,10 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
                                                vertices[i].Pos.rotateXZBy(-44 + n.param2 * 2);
                                }
 
-                               for(u16 i = 0; i < 4; i++)
+                               for (int i = 0; i < 4; i++)
                                {
                                        vertices[i].Pos *= f.visual_scale;
-                                       vertices[i].Pos.Y -= s * (1 - f.visual_scale);
+                                       vertices[i].Pos.Y += BS/2 * (f.visual_scale - 1);
                                        vertices[i].Pos += intToFloat(p, BS);
                                }
 
@@ -1621,17 +1622,18 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
                        video::SColor c = MapBlock_LightColor(255, l, f.light_source);
 
                        float d = (float)BS/64;
-                       
-                       char g=-1;
+                       float s = BS/2;
+
+                       short g = -1;
                        if (is_rail_x_plus_y[0] || is_rail_x_plus_y[1] || is_rail_z_plus_y[0] || is_rail_z_plus_y[1])
-                               g=1; //Object is at a slope
+                               g = 1; //Object is at a slope
 
                        video::S3DVertex vertices[4] =
                        {
-                                       video::S3DVertex(-BS/2,-BS/2+d,-BS/2, 0,0,0, c, 0,1),
-                                       video::S3DVertex(BS/2,-BS/2+d,-BS/2, 0,0,0, c, 1,1),
-                                       video::S3DVertex(BS/2,g*BS/2+d,BS/2, 0,0,0, c, 1,0),
-                                       video::S3DVertex(-BS/2,g*BS/2+d,BS/2, 0,0,0, c, 0,0),
+                                       video::S3DVertex(-s,  -s+d,-s,  0,0,0,  c,0,1),
+                                       video::S3DVertex( s,  -s+d,-s,  0,0,0,  c,1,1),
+                                       video::S3DVertex( s, g*s+d, s,  0,0,0,  c,1,0),
+                                       video::S3DVertex(-s, g*s+d, s,  0,0,0,  c,0,0),
                        };
 
                        for(s32 i=0; i<4; i++)