Skip to content

Commit bda2f56

Browse files
committedOct 11, 2015
Mgfractal: Independant offset and slice params for mandelbrot and julia
Player now spawns on julia set due to julia offset Add commented-out '#include profiler.h' for timetaker use Use v3fs to reduce number of parameters Tune tunnel width to match mgv7
1 parent 3a4bcf3 commit bda2f56

File tree

2 files changed

+53
-51
lines changed

2 files changed

+53
-51
lines changed
 

‎src/mapgen_fractal.cpp

+39-37
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
2828
#include "content_sao.h"
2929
#include "nodedef.h"
3030
#include "voxelalgorithms.h"
31+
//#include "profiler.h" // For TimeTaker
3132
#include "settings.h" // For g_settings
3233
#include "emerge.h"
3334
#include "dungeongen.h"
@@ -65,14 +66,15 @@ MapgenFractal::MapgenFractal(int mapgenid, MapgenParams *params, EmergeManager *
6566

6667
MapgenFractalParams *sp = (MapgenFractalParams *)params->sparams;
6768
this->spflags = sp->spflags;
69+
6870
this->iterations = sp->iterations;
69-
this->scale_x = sp->scale_x;
70-
this->scale_y = sp->scale_y;
71-
this->scale_z = sp->scale_z;
72-
this->offset_x = sp->offset_x;
73-
this->offset_y = sp->offset_y;
74-
this->offset_z = sp->offset_z;
75-
this->slice_w = sp->slice_w;
71+
this->scale = sp->scale;
72+
73+
this->moffset = sp->moffset;
74+
this->mslice_w = sp->mslice_w;
75+
76+
this->joffset = sp->joffset;
77+
this->jslice_w = sp->jslice_w;
7678
this->julia_x = sp->julia_x;
7779
this->julia_y = sp->julia_y;
7880
this->julia_z = sp->julia_z;
@@ -142,13 +144,13 @@ MapgenFractalParams::MapgenFractalParams()
142144
spflags = 0;
143145

144146
iterations = 9;
145-
scale_x = 1024.0;
146-
scale_y = 256.0;
147-
scale_z = 1024.0;
148-
offset_x = -1.75;
149-
offset_y = 0.0;
150-
offset_z = 0.0;
151-
slice_w = 0.0;
147+
scale = v3f(1024.0, 256.0, 1024.0);
148+
149+
moffset = v3f(1.75, 0.0, 0.0); // Mandelbrot set only
150+
mslice_w = 0.0;
151+
152+
joffset = v3f(0.0, 1.0, 0.0); // Julia set only
153+
jslice_w = 0.0;
152154
julia_x = 0.33;
153155
julia_y = 0.33;
154156
julia_z = 0.33;
@@ -165,13 +167,13 @@ void MapgenFractalParams::readParams(const Settings *settings)
165167
settings->getFlagStrNoEx("mgfractal_spflags", spflags, flagdesc_mapgen_fractal);
166168

167169
settings->getU16NoEx("mgfractal_iterations", iterations);
168-
settings->getFloatNoEx("mgfractal_scale_x", scale_x);
169-
settings->getFloatNoEx("mgfractal_scale_y", scale_y);
170-
settings->getFloatNoEx("mgfractal_scale_z", scale_z);
171-
settings->getFloatNoEx("mgfractal_offset_x", offset_x);
172-
settings->getFloatNoEx("mgfractal_offset_y", offset_y);
173-
settings->getFloatNoEx("mgfractal_offset_z", offset_z);
174-
settings->getFloatNoEx("mgfractal_slice_w", slice_w);
170+
settings->getV3FNoEx("mgfractal_scale", scale);
171+
172+
settings->getV3FNoEx("mgfractal_moffset", moffset);
173+
settings->getFloatNoEx("mgfractal_mslice_w", mslice_w);
174+
175+
settings->getV3FNoEx("mgfractal_joffset", joffset);
176+
settings->getFloatNoEx("mgfractal_jslice_w", jslice_w);
175177
settings->getFloatNoEx("mgfractal_julia_x", julia_x);
176178
settings->getFloatNoEx("mgfractal_julia_y", julia_y);
177179
settings->getFloatNoEx("mgfractal_julia_z", julia_z);
@@ -188,13 +190,13 @@ void MapgenFractalParams::writeParams(Settings *settings) const
188190
settings->setFlagStr("mgfractal_spflags", spflags, flagdesc_mapgen_fractal, U32_MAX);
189191

190192
settings->setU16("mgfractal_iterations", iterations);
191-
settings->setFloat("mgfractal_scale_x", scale_x);
192-
settings->setFloat("mgfractal_scale_y", scale_y);
193-
settings->setFloat("mgfractal_scale_z", scale_z);
194-
settings->setFloat("mgfractal_offset_x", offset_x);
195-
settings->setFloat("mgfractal_offset_y", offset_y);
196-
settings->setFloat("mgfractal_offset_z", offset_z);
197-
settings->setFloat("mgfractal_slice_w", slice_w);
193+
settings->setV3F("mgfractal_scale", scale);
194+
195+
settings->setV3F("mgfractal_moffset", moffset);
196+
settings->setFloat("mgfractal_mslice_w", mslice_w);
197+
198+
settings->setV3F("mgfractal_joffset", joffset);
199+
settings->setFloat("mgfractal_jslice_w", jslice_w);
198200
settings->setFloat("mgfractal_julia_x", julia_x);
199201
settings->setFloat("mgfractal_julia_y", julia_y);
200202
settings->setFloat("mgfractal_julia_z", julia_z);
@@ -374,15 +376,15 @@ bool MapgenFractal::getFractalAtPoint(s16 x, s16 y, s16 z)
374376
cy = julia_y;
375377
cz = julia_z;
376378
cw = julia_w;
377-
ox = (float)x / scale_x + offset_x;
378-
oy = (float)y / scale_y + offset_y;
379-
oz = (float)z / scale_z + offset_z;
380-
ow = slice_w;
379+
ox = (float)x / scale.X - joffset.X;
380+
oy = (float)y / scale.Y - joffset.Y;
381+
oz = (float)z / scale.Z - joffset.Z;
382+
ow = jslice_w;
381383
} else { // Mandelbrot set
382-
cx = (float)x / scale_x + offset_x;
383-
cy = (float)y / scale_y + offset_y;
384-
cz = (float)z / scale_z + offset_z;
385-
cw = slice_w;
384+
cx = (float)x / scale.X - moffset.X;
385+
cy = (float)y / scale.Y - moffset.Y;
386+
cz = (float)z / scale.Z - moffset.Z;
387+
cw = mslice_w;
386388
ox = 0.0f;
387389
oy = 0.0f;
388390
oz = 0.0f;
@@ -603,7 +605,7 @@ void MapgenFractal::generateCaves(s16 max_stone_y)
603605
for (s16 x = node_min.X; x <= node_max.X; x++, vi++, index++) {
604606
float d1 = contour(noise_cave1->result[index]);
605607
float d2 = contour(noise_cave2->result[index]);
606-
if (d1 * d2 > 0.3) {
608+
if (d1 * d2 > 0.4f) {
607609
content_t c = vm->m_data[vi].getContent();
608610
if (!ndef->get(c).is_ground_content || c == CONTENT_AIR)
609611
continue;

‎src/mapgen_fractal.h

+14-14
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ struct MapgenFractalParams : public MapgenSpecificParams {
3737
u32 spflags;
3838

3939
u16 iterations;
40-
float scale_x;
41-
float scale_y;
42-
float scale_z;
43-
float offset_x;
44-
float offset_y;
45-
float offset_z;
46-
float slice_w;
40+
v3f scale;
41+
42+
v3f moffset;
43+
float mslice_w;
44+
45+
v3f joffset;
46+
float jslice_w;
4747
float julia_x;
4848
float julia_y;
4949
float julia_z;
@@ -75,13 +75,13 @@ class MapgenFractal : public Mapgen {
7575
v3s16 full_node_max;
7676

7777
u16 iterations;
78-
float scale_x;
79-
float scale_y;
80-
float scale_z;
81-
float offset_x;
82-
float offset_y;
83-
float offset_z;
84-
float slice_w;
78+
v3f scale;
79+
80+
v3f moffset;
81+
float mslice_w;
82+
83+
v3f joffset;
84+
float jslice_w;
8585
float julia_x;
8686
float julia_y;
8787
float julia_z;

0 commit comments

Comments
 (0)
Please sign in to comment.