Mgv6: Use heightmap in placeTreesAndJungleGrass()
authorparamat <mat.gregory@virginmedia.com>
Mon, 23 Mar 2015 19:36:00 +0000 (19:36 +0000)
committerparamat <mat.gregory@virginmedia.com>
Mon, 23 Mar 2015 21:55:01 +0000 (21:55 +0000)
src/mapgen_v6.cpp

index 2ecf42a0fc94e7c01c0c9280a36dc02edc1ec0d7..8885c71e53f45d8d8171f7d1ab69630dc73527b1 100644 (file)
@@ -877,9 +877,10 @@ void MapgenV6::placeTreesAndJungleGrass()
                        for (u32 i = 0; i < grass_count; i++) {
                                s16 x = grassrandom.range(p2d_min.X, p2d_max.X);
                                s16 z = grassrandom.range(p2d_min.Y, p2d_max.Y);
-
-                               s16 y = findGroundLevelFull(v2s16(x, z)); ////////////////optimize this!
-                               if (y < water_level || y < node_min.Y || y > node_max.Y)
+                               int mapindex = central_area_size.X * (z - node_min.Z)
+                                                               + (x - node_min.X);
+                               s16 y = heightmap[mapindex];
+                               if (y < water_level)
                                        continue;
 
                                u32 vi = vm->m_area.index(x, y, z);
@@ -895,7 +896,9 @@ void MapgenV6::placeTreesAndJungleGrass()
                for (u32 i = 0; i < tree_count; i++) {
                        s16 x = myrand_range(p2d_min.X, p2d_max.X);
                        s16 z = myrand_range(p2d_min.Y, p2d_max.Y);
-                       s16 y = findGroundLevelFull(v2s16(x, z)); ////////////////////optimize this!
+                       int mapindex = central_area_size.X * (z - node_min.Z)
+                                                       + (x - node_min.X);
+                       s16 y = heightmap[mapindex];
                        // Don't make a tree under water level
                        // Don't make a tree so high that it doesn't fit
                        if(y < water_level || y > node_max.Y - 6)