aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkwolekr <kwolekr@minetest.net>2013-11-29 20:54:04 -0500
committerkwolekr <kwolekr@minetest.net>2013-11-29 20:54:04 -0500
commit747bc40840ff13bcf9c7a60b790a6de24f94f946 (patch)
treedeb362d95bd040357a76ca71c493c1a44acb3444
parentd19a69cd0d22dfbe802286baf8b33ebb8c6f4fa2 (diff)
downloadminetest-747bc40840ff13bcf9c7a60b790a6de24f94f946.tar.gz
minetest-747bc40840ff13bcf9c7a60b790a6de24f94f946.tar.bz2
minetest-747bc40840ff13bcf9c7a60b790a6de24f94f946.zip
Cavegen: Respect is_ground_content MapNode setting; fix some code formatting issues
-rw-r--r--src/cavegen.cpp8
-rw-r--r--src/mapnode.cpp11
-rw-r--r--src/nodedef.cpp35
3 files changed, 29 insertions, 25 deletions
diff --git a/src/cavegen.cpp b/src/cavegen.cpp
index 51af50984..71f005d5b 100644
--- a/src/cavegen.cpp
+++ b/src/cavegen.cpp
@@ -236,6 +236,9 @@ void CaveV6::carveRoute(v3f vec, float f, bool randomize_xz) {
continue;
u32 i = vm->m_area.index(p);
+ content_t c = vm->m_data[i].getContent();
+ if (!ndef->get(c).is_ground_content)
+ continue;
if (large_cave) {
int full_ymin = node_min.Y - MAP_BLOCKSIZE;
@@ -250,7 +253,6 @@ void CaveV6::carveRoute(v3f vec, float f, bool randomize_xz) {
}
} else {
// Don't replace air or water or lava or ignore
- content_t c = vm->m_data[i].getContent();
if (c == CONTENT_IGNORE || c == CONTENT_AIR ||
c == c_water_source || c == c_lava_source)
continue;
@@ -530,8 +532,8 @@ void CaveV7::carveRoute(v3f vec, float f, bool randomize_xz, bool is_ravine) {
// Don't replace air, water, lava, or ice
content_t c = vm->m_data[i].getContent();
- if (c == CONTENT_AIR || c == c_water_source ||
- c == c_lava_source || c == c_ice)
+ if (!ndef->get(c).is_ground_content || c == CONTENT_AIR ||
+ c == c_water_source || c == c_lava_source || c == c_ice)
continue;
if (large_cave) {
diff --git a/src/mapnode.cpp b/src/mapnode.cpp
index a47a48bc0..d52677be0 100644
--- a/src/mapnode.cpp
+++ b/src/mapnode.cpp
@@ -383,8 +383,10 @@ u8 MapNode::getLevel(INodeDefManager *nodemgr) const
return getParam2() & LIQUID_LEVEL_MASK;
if(f.leveled || f.param_type_2 == CPT2_LEVELED) {
u8 level = getParam2() & LEVELED_MASK;
- if(level) return level;
- if(f.leveled > LEVELED_MAX) return LEVELED_MAX;
+ if(level)
+ return level;
+ if(f.leveled > LEVELED_MAX)
+ return LEVELED_MAX;
return f.leveled; //default
}
return 0;
@@ -398,7 +400,7 @@ u8 MapNode::setLevel(INodeDefManager *nodemgr, s8 level)
return 0;
}
const ContentFeatures &f = nodemgr->get(*this);
- if ( f.param_type_2 == CPT2_FLOWINGLIQUID
+ if (f.param_type_2 == CPT2_FLOWINGLIQUID
|| f.liquid_type == LIQUID_FLOWING
|| f.liquid_type == LIQUID_SOURCE) {
if (level >= LIQUID_LEVEL_SOURCE) {
@@ -487,8 +489,7 @@ void MapNode::deSerialize(u8 *source, u8 version)
param0 = readU16(source+0);
param1 = readU8(source+2);
param2 = readU8(source+3);
- }
- else{
+ }else{
param0 = readU8(source+0);
param1 = readU8(source+1);
param2 = readU8(source+2);
diff --git a/src/nodedef.cpp b/src/nodedef.cpp
index 41956ca2e..d13d0653d 100644
--- a/src/nodedef.cpp
+++ b/src/nodedef.cpp
@@ -396,15 +396,16 @@ public:
// Set CONTENT_AIR
{
ContentFeatures f;
- f.name = "air";
- f.drawtype = NDT_AIRLIKE;
- f.param_type = CPT_LIGHT;
- f.light_propagates = true;
+ f.name = "air";
+ f.drawtype = NDT_AIRLIKE;
+ f.param_type = CPT_LIGHT;
+ f.light_propagates = true;
f.sunlight_propagates = true;
- f.walkable = false;
- f.pointable = false;
- f.diggable = false;
- f.buildable_to = true;
+ f.walkable = false;
+ f.pointable = false;
+ f.diggable = false;
+ f.buildable_to = true;
+ f.is_ground_content = true;
// Insert directly into containers
content_t c = CONTENT_AIR;
m_content_features[c] = f;
@@ -414,16 +415,16 @@ public:
// Set CONTENT_IGNORE
{
ContentFeatures f;
- f.name = "ignore";
- f.drawtype = NDT_AIRLIKE;
- f.param_type = CPT_NONE;
- f.light_propagates = false;
+ f.name = "ignore";
+ f.drawtype = NDT_AIRLIKE;
+ f.param_type = CPT_NONE;
+ f.light_propagates = false;
f.sunlight_propagates = false;
- f.walkable = false;
- f.pointable = false;
- f.diggable = false;
- // A way to remove accidental CONTENT_IGNOREs
- f.buildable_to = true;
+ f.walkable = false;
+ f.pointable = false;
+ f.diggable = false;
+ f.buildable_to = true; // A way to remove accidental CONTENT_IGNOREs
+ f.is_ground_content = true;
// Insert directly into containers
content_t c = CONTENT_IGNORE;
m_content_features[c] = f;