diff options
author | kwolekr <kwolekr@minetest.net> | 2013-03-30 21:24:37 -0400 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2013-03-30 21:24:37 -0400 |
commit | c517215bcf3c92ccef1690ad871a234e547c8435 (patch) | |
tree | 9aee34f62b843fc61aae545e39bfa13aff517139 | |
parent | 414f0275cfa014423394cc9c37ecb0151c3bd46c (diff) | |
download | minetest-c517215bcf3c92ccef1690ad871a234e547c8435.tar.gz minetest-c517215bcf3c92ccef1690ad871a234e547c8435.tar.bz2 minetest-c517215bcf3c92ccef1690ad871a234e547c8435.zip |
Fix MapgenV6::generateCaves possible division by 0 and misc. cosmetic fixes
-rw-r--r-- | src/mapgen_v6.cpp | 36 | ||||
-rw-r--r-- | src/nodedef.cpp | 1 | ||||
-rw-r--r-- | src/scriptapi.cpp | 2 |
3 files changed, 23 insertions, 16 deletions
diff --git a/src/mapgen_v6.cpp b/src/mapgen_v6.cpp index 0b419617d..275d4b78f 100644 --- a/src/mapgen_v6.cpp +++ b/src/mapgen_v6.cpp @@ -928,20 +928,20 @@ void MapgenV6::growGrass() { void MapgenV6::defineCave(Cave &cave, PseudoRandom ps, v3s16 node_min, bool large_cave) { - cave.min_tunnel_diameter = 2; - cave.max_tunnel_diameter = ps.range(2,6); - cave.dswitchint = ps.range(1,14); - cave.flooded = true; //large_cave && ps.range(0,4); - if(large_cave){ - cave.part_max_length_rs = ps.range(2,4); - cave.tunnel_routepoints = ps.range(5, ps.range(15,30)); - cave.min_tunnel_diameter = 5; - cave.max_tunnel_diameter = ps.range(7, ps.range(8,24)); - } else { - cave.part_max_length_rs = ps.range(2,9); - cave.tunnel_routepoints = ps.range(10, ps.range(15,30)); - } - cave.large_cave_is_flat = (ps.range(0,1) == 0); + cave.min_tunnel_diameter = 2; + cave.max_tunnel_diameter = ps.range(2,6); + cave.dswitchint = ps.range(1,14); + cave.flooded = true; //large_cave && ps.range(0,4); + if (large_cave){ + cave.part_max_length_rs = ps.range(2,4); + cave.tunnel_routepoints = ps.range(5, ps.range(15,30)); + cave.min_tunnel_diameter = 5; + cave.max_tunnel_diameter = ps.range(7, ps.range(8,24)); + } else { + cave.part_max_length_rs = ps.range(2,9); + cave.tunnel_routepoints = ps.range(10, ps.range(15,30)); + } + cave.large_cave_is_flat = (ps.range(0,1) == 0); } @@ -1120,7 +1120,13 @@ void MapgenV6::generateCaves(int max_stone_y) { rp.Z = ar.Z-1; vec = rp - orp; - for(float f=0; f<1.0; f+=1.0/vec.getLength()) + float veclen = vec.getLength(); + // As odd as it sounds, veclen is *exactly* + // 0.0 sometimes, causing a FPE + if (veclen == 0.0) + veclen = 1.0; + + for(float f=0; f<1.0; f+=1.0/veclen) { v3f fp = orp + vec * f; fp.X += 0.1*ps.range(-10,10); diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 59db68a36..ca8898907 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -822,6 +822,7 @@ private: std::map<std::string, content_t> m_name_id_mapping_with_aliases; // A mapping from groups to a list of content_ts (and their levels) // that belong to it. Necessary for a direct lookup in getIds(). + // Note: Not serialized. std::map<std::string, GroupItems> m_group_to_items; }; diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp index 80abffa2b..81fcc08d3 100644 --- a/src/scriptapi.cpp +++ b/src/scriptapi.cpp @@ -727,7 +727,7 @@ static int l_register_ore(lua_State *L) if (ore->clust_scarcity <= 0 || ore->clust_num_ores <= 0) { errorstream << "register_ore: clust_scarcity and clust_num_ores" - "must be greater than 0"; + " must be greater than 0" << std::endl; delete ore; return 0; } |