X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fnoise.h;h=9f9e2af6df4210de55f1c9da1578a5902532a89d;hb=86a0f5603b9e936b8527ae22c4aeaf5714c9d279;hp=34b4d0b41bcad8cdea32e4ba38ffe86e0b381324;hpb=a0566270d9fa075afa36a7e3e68c690b1b23ba90;p=oweals%2Fminetest.git diff --git a/src/noise.h b/src/noise.h index 34b4d0b41..9f9e2af6d 100644 --- a/src/noise.h +++ b/src/noise.h @@ -1,6 +1,7 @@ /* Minetest Copyright (C) 2010-2013 celeron55, Perttu Ahola +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 @@ -67,12 +68,28 @@ struct NoiseParams { int seed; int octaves; float persist; + + NoiseParams() {} + + NoiseParams(float offset_, float scale_, v3f spread_, + int seed_, int octaves_, float persist_) + { + offset = offset_; + scale = scale_; + spread = spread_; + seed = seed_; + octaves = octaves_; + persist = persist_; + } }; // Convenience macros for getting/setting NoiseParams in Settings -#define getNoiseParams(x) getStruct((x), "f,f,v3,s32,s32,f") -#define setNoiseParams(x, y) setStruct((x), "f,f,v3,s32,s32,f", (y)) + +#define NOISEPARAMS_FMT_STR "f,f,v3,s32,s32,f" + +#define getNoiseParams(x, y) getStruct((x), NOISEPARAMS_FMT_STR, &(y), sizeof(y)) +#define setNoiseParams(x, y) setStruct((x), NOISEPARAMS_FMT_STR, &(y)) class Noise { public: @@ -87,7 +104,7 @@ public: Noise(NoiseParams *np, int seed, int sx, int sy); Noise(NoiseParams *np, int seed, int sx, int sy, int sz); - ~Noise(); + virtual ~Noise(); virtual void init(NoiseParams *np, int seed, int sx, int sy, int sz); void setSize(int sx, int sy); @@ -105,6 +122,7 @@ public: float step_x, float step_y, float step_z, int seed); float *perlinMap2D(float x, float y); + float *perlinMap2DModulated(float x, float y, float *persist_map); float *perlinMap3D(float x, float y, float z); void transformNoiseMap(); };