From 03868ff8e1bcdcc831b8bd845b8ea7961f7ea1c8 Mon Sep 17 00:00:00 2001 From: kwolekr Date: Sun, 21 Apr 2013 00:11:05 -0400 Subject: Class-ify caves & move to cavegen.cpp, fix cave regression, add caves to Mapgen V7 --- src/cavegen.h | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/cavegen.h (limited to 'src/cavegen.h') diff --git a/src/cavegen.h b/src/cavegen.h new file mode 100644 index 000000000..979226b3e --- /dev/null +++ b/src/cavegen.h @@ -0,0 +1,68 @@ +/* +Minetest +Copyright (C) 2010-2013 kwolekr, Ryan Kwolek + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#ifndef CAVEGEN_HEADER +#define CAVEGEN_HEADER + +#define VMANIP_FLAG_CAVE VOXELFLAG_CHECKED1 + +class CaveV6 { +public: + ManualMapVoxelManipulator *vm; + + s16 min_tunnel_diameter; + s16 max_tunnel_diameter; + u16 tunnel_routepoints; + int dswitchint; + int part_max_length_rs; + + bool large_cave; + bool large_cave_is_flat; + bool flooded; + + s16 max_stone_y; + v3s16 node_min; + v3s16 node_max; + + v3f orp; //original point + v3s16 of; + v3s16 ar; // allowed route area + s16 rs; // radius size + v3f main_direction; + + s16 route_y_min; + s16 route_y_max; + + PseudoRandom *ps; + PseudoRandom *ps2; + + content_t c_water_source; + content_t c_lava_source; + + int water_level; + + CaveV6() {} + CaveV6(Mapgen *mg, PseudoRandom *ps, PseudoRandom *ps2, bool large_cave, + content_t c_water, content_t c_lava); + void makeCave(v3s16 nmin, v3s16 nmax, int max_stone_height); + void makeTunnel(bool dirswitch); + void carveRoute(v3f vec, float f, bool randomize_xz); +}; + +#endif -- cgit v1.2.3