Mapgen::Mapgen()
{
- generating = false;
- id = -1;
- seed = 0;
- water_level = 0;
- flags = 0;
-
- vm = NULL;
- ndef = NULL;
- heightmap = NULL;
- biomemap = NULL;
+ generating = false;
+ id = -1;
+ seed = 0;
+ water_level = 0;
+ flags = 0;
+
+ vm = NULL;
+ ndef = NULL;
+ heightmap = NULL;
+ biomemap = NULL;
+ heatmap = NULL;
+ humidmap = NULL;
}
Mapgen::Mapgen(int mapgenid, MapgenParams *params, EmergeManager *emerge) :
gennotify(emerge->gen_notify_on, &emerge->gen_notify_on_deco_ids)
{
- generating = false;
- id = mapgenid;
- seed = (int)params->seed;
- water_level = params->water_level;
- flags = params->flags;
- csize = v3s16(1, 1, 1) * (params->chunksize * MAP_BLOCKSIZE);
+ generating = false;
+ id = mapgenid;
+ seed = (int)params->seed;
+ water_level = params->water_level;
+ flags = params->flags;
+ csize = v3s16(1, 1, 1) * (params->chunksize * MAP_BLOCKSIZE);
vm = NULL;
ndef = NULL;
heightmap = NULL;
biomemap = NULL;
+ heatmap = NULL;
+ humidmap = NULL;
}
u32 blockseed;
s16 *heightmap;
u8 *biomemap;
+ float *heatmap;
+ float *humidmap;
v3s16 csize;
GenerateNotifier gennotify;
this->biomemap = new u8[csize.X * csize.Z];
this->heightmap = new s16[csize.X * csize.Z];
+ this->heatmap = NULL;
+ this->humidmap = NULL;
MapgenV5Params *sp = (MapgenV5Params *)params->sparams;
this->spflags = sp->spflags;
noise_heat->result[i] += noise_heat_blend->result[i];
noise_humidity->result[i] += noise_humidity_blend->result[i];
}
+
+ heatmap = noise_heat->result;
+ humidmap = noise_humidity->result;
//printf("calculateNoise: %dus\n", t.stop());
}
#define LARGE_CAVE_DEPTH -256
-/////////////////// Mapgen V5 flags
-//#define MGV5_ 0x01
-
class BiomeManager;
extern FlagDesc flagdesc_mapgen_v5[];
this->ystride = csize.X;
this->zstride = csize.X * (csize.Y + 2);
- this->biomemap = new u8[csize.X * csize.Z];
- this->heightmap = new s16[csize.X * csize.Z];
+ this->biomemap = new u8[csize.X * csize.Z];
+ this->heightmap = new s16[csize.X * csize.Z];
+ this->heatmap = NULL;
+ this->humidmap = NULL;
this->ridge_heightmap = new s16[csize.X * csize.Z];
MapgenV7Params *sp = (MapgenV7Params *)params->sparams;
noise_heat->result[i] += noise_heat_blend->result[i];
noise_humidity->result[i] += noise_humidity_blend->result[i];
}
+
+ heatmap = noise_heat->result;
+ humidmap = noise_humidity->result;
//printf("calculateNoise: %dus\n", t.stop());
}
return 1;
}
- case MGOBJ_HEATMAP: { // Mapgen V7 specific objects
- case MGOBJ_HUMIDMAP:
- if (strcmp(emerge->params.mg_name.c_str(), "v7"))
+ case MGOBJ_HEATMAP: {
+ if (!mg->heatmap)
return 0;
- MapgenV7 *mgv7 = (MapgenV7 *)mg;
+ lua_newtable(L);
+ for (size_t i = 0; i != maplen; i++) {
+ lua_pushnumber(L, mg->heatmap[i]);
+ lua_rawseti(L, -2, i + 1);
+ }
+
+ return 1;
+ }
- float *arr = (mgobj == MGOBJ_HEATMAP) ?
- mgv7->noise_heat->result : mgv7->noise_humidity->result;
- if (!arr)
+ case MGOBJ_HUMIDMAP: {
+ if (!mg->humidmap)
return 0;
lua_newtable(L);
for (size_t i = 0; i != maplen; i++) {
- lua_pushnumber(L, arr[i]);
+ lua_pushnumber(L, mg->humidmap[i]);
lua_rawseti(L, -2, i + 1);
}