@@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
28
28
#include " content_sao.h"
29
29
#include " nodedef.h"
30
30
#include " voxelalgorithms.h"
31
+ // #include "profiler.h" // For TimeTaker
31
32
#include " settings.h" // For g_settings
32
33
#include " emerge.h"
33
34
#include " dungeongen.h"
@@ -65,14 +66,15 @@ MapgenFractal::MapgenFractal(int mapgenid, MapgenParams *params, EmergeManager *
65
66
66
67
MapgenFractalParams *sp = (MapgenFractalParams *)params->sparams ;
67
68
this ->spflags = sp->spflags ;
69
+
68
70
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 ;
76
78
this ->julia_x = sp->julia_x ;
77
79
this ->julia_y = sp->julia_y ;
78
80
this ->julia_z = sp->julia_z ;
@@ -142,13 +144,13 @@ MapgenFractalParams::MapgenFractalParams()
142
144
spflags = 0 ;
143
145
144
146
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 ;
152
154
julia_x = 0.33 ;
153
155
julia_y = 0.33 ;
154
156
julia_z = 0.33 ;
@@ -165,13 +167,13 @@ void MapgenFractalParams::readParams(const Settings *settings)
165
167
settings->getFlagStrNoEx (" mgfractal_spflags" , spflags, flagdesc_mapgen_fractal);
166
168
167
169
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 );
175
177
settings->getFloatNoEx (" mgfractal_julia_x" , julia_x);
176
178
settings->getFloatNoEx (" mgfractal_julia_y" , julia_y);
177
179
settings->getFloatNoEx (" mgfractal_julia_z" , julia_z);
@@ -188,13 +190,13 @@ void MapgenFractalParams::writeParams(Settings *settings) const
188
190
settings->setFlagStr (" mgfractal_spflags" , spflags, flagdesc_mapgen_fractal, U32_MAX);
189
191
190
192
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 );
198
200
settings->setFloat (" mgfractal_julia_x" , julia_x);
199
201
settings->setFloat (" mgfractal_julia_y" , julia_y);
200
202
settings->setFloat (" mgfractal_julia_z" , julia_z);
@@ -374,15 +376,15 @@ bool MapgenFractal::getFractalAtPoint(s16 x, s16 y, s16 z)
374
376
cy = julia_y;
375
377
cz = julia_z;
376
378
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 ;
381
383
} 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 ;
386
388
ox = 0 .0f ;
387
389
oy = 0 .0f ;
388
390
oz = 0 .0f ;
@@ -603,7 +605,7 @@ void MapgenFractal::generateCaves(s16 max_stone_y)
603
605
for (s16 x = node_min.X ; x <= node_max.X ; x++, vi++, index ++) {
604
606
float d1 = contour (noise_cave1->result [index ]);
605
607
float d2 = contour (noise_cave2->result [index ]);
606
- if (d1 * d2 > 0.3 ) {
608
+ if (d1 * d2 > 0 .4f ) {
607
609
content_t c = vm->m_data [vi].getContent ();
608
610
if (!ndef->get (c).is_ground_content || c == CONTENT_AIR)
609
611
continue ;
0 commit comments