Minetest 5.9.0-dev
 
Loading...
Searching...
No Matches
l_noise.h
Go to the documentation of this file.
1/*
2Minetest
3Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4
5This program is free software; you can redistribute it and/or modify
6it under the terms of the GNU Lesser General Public License as published by
7the Free Software Foundation; either version 2.1 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU Lesser General Public License for more details.
14
15You should have received a copy of the GNU Lesser General Public License along
16with this program; if not, write to the Free Software Foundation, Inc.,
1751 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18*/
19
20#pragma once
21
22#include "irr_v3d.h"
23#include "lua_api/l_base.h"
24#include "noise.h"
25
26/*
27 LuaPerlinNoise
28*/
30{
31private:
33
34 static luaL_Reg methods[];
35
36 // Exported functions
37
38 // garbage collector
39 static int gc_object(lua_State *L);
40
41 static int l_get_2d(lua_State *L);
42 static int l_get_3d(lua_State *L);
43
44public:
46 ~LuaPerlinNoise() = default;
47
48 // LuaPerlinNoise(seed, octaves, persistence, scale)
49 // Creates an LuaPerlinNoise and leaves it on top of stack
50 static int create_object(lua_State *L);
51
52 static void *packIn(lua_State *L, int idx);
53 static void packOut(lua_State *L, void *ptr);
54
55 static void Register(lua_State *L);
56
57 static const char className[];
58};
59
60/*
61 LuaPerlinNoiseMap
62*/
64{
66
67 static luaL_Reg methods[];
68
69 // Exported functions
70
71 // garbage collector
72 static int gc_object(lua_State *L);
73
74 static int l_get_2d_map(lua_State *L);
75 static int l_get_2d_map_flat(lua_State *L);
76 static int l_get_3d_map(lua_State *L);
77 static int l_get_3d_map_flat(lua_State *L);
78
79 static int l_calc_2d_map(lua_State *L);
80 static int l_calc_3d_map(lua_State *L);
81 static int l_get_map_slice(lua_State *L);
82
83public:
84 LuaPerlinNoiseMap(const NoiseParams *np, s32 seed, v3s16 size);
86
87 inline bool is3D() const { return noise->sz > 1; }
88
89 // LuaPerlinNoiseMap(np, size)
90 // Creates an LuaPerlinNoiseMap and leaves it on top of stack
91 static int create_object(lua_State *L);
92
93 static void *packIn(lua_State *L, int idx);
94 static void packOut(lua_State *L, void *ptr);
95
96 static void Register(lua_State *L);
97
98 static const char className[];
99};
100
101/*
102 LuaPseudoRandom
103*/
105{
106private:
108
109 static const luaL_Reg methods[];
110
111 // Exported functions
112
113 // garbage collector
114 static int gc_object(lua_State *L);
115
116 // next(self, min=0, max=32767) -> get next value
117 static int l_next(lua_State *L);
118
119 // save state
120 static int l_get_state(lua_State *L);
121public:
122 LuaPseudoRandom(s32 seed) : m_pseudo(seed) {}
123
124 // LuaPseudoRandom(seed)
125 // Creates an LuaPseudoRandom and leaves it on top of stack
126 static int create_object(lua_State *L);
127
128 static void Register(lua_State *L);
129
130 static const char className[];
131};
132
133/*
134 LuaPcgRandom
135*/
137{
138private:
140
141 static const luaL_Reg methods[];
142
143 // Exported functions
144
145 // garbage collector
146 static int gc_object(lua_State *L);
147
148 // next(self, min=-2147483648, max=2147483647) -> get next value
149 static int l_next(lua_State *L);
150
151 // rand_normal_dist(self, min=-2147483648, max=2147483647, num_trials=6) ->
152 // get next normally distributed random value
153 static int l_rand_normal_dist(lua_State *L);
154
155 // save and restore state
156 static int l_get_state(lua_State *L);
157 static int l_set_state(lua_State *L);
158public:
159 LuaPcgRandom(u64 seed) : m_rnd(seed) {}
160 LuaPcgRandom(u64 seed, u64 seq) : m_rnd(seed, seq) {}
161
162 // LuaPcgRandom(seed)
163 // Creates an LuaPcgRandom and leaves it on top of stack
164 static int create_object(lua_State *L);
165
166 static void Register(lua_State *L);
167
168 static const char className[];
169};
170
171/*
172 LuaSecureRandom
173*/
175{
176private:
177 static const size_t RAND_BUF_SIZE = 2048;
178 static const luaL_Reg methods[];
179
182
183 // Exported functions
184
185 // garbage collector
186 static int gc_object(lua_State *L);
187
188 // next_bytes(self, count) -> get count many bytes
189 static int l_next_bytes(lua_State *L);
190
191public:
192 bool fillRandBuf();
193
194 // LuaSecureRandom()
195 // Creates an LuaSecureRandom and leaves it on top of stack
196 static int create_object(lua_State *L);
197
198 static void Register(lua_State *L);
199
200 static const char className[];
201};
Definition: l_noise.h:137
static const char className[]
Definition: l_noise.h:168
LuaPcgRandom(u64 seed, u64 seq)
Definition: l_noise.h:160
PcgRandom m_rnd
Definition: l_noise.h:139
static int l_set_state(lua_State *L)
Definition: l_noise.cpp:528
LuaPcgRandom(u64 seed)
Definition: l_noise.h:159
static int l_next(lua_State *L)
Definition: l_noise.cpp:485
static int l_get_state(lua_State *L)
Definition: l_noise.cpp:511
static const luaL_Reg methods[]
Definition: l_noise.h:141
static int gc_object(lua_State *L)
Definition: l_noise.cpp:566
static int create_object(lua_State *L)
Definition: l_noise.cpp:551
static int l_rand_normal_dist(lua_State *L)
Definition: l_noise.cpp:498
Definition: l_noise.h:64
static void * packIn(lua_State *L, int idx)
Definition: l_noise.cpp:349
static int l_calc_2d_map(lua_State *L)
Definition: l_noise.cpp:265
static luaL_Reg methods[]
Definition: l_noise.h:67
static int l_get_3d_map(lua_State *L)
Definition: l_noise.cpp:205
static void packOut(lua_State *L, void *ptr)
Definition: l_noise.cpp:359
static int l_calc_3d_map(lua_State *L)
Definition: l_noise.cpp:278
static int l_get_3d_map_flat(lua_State *L)
Definition: l_noise.cpp:236
static int l_get_2d_map_flat(lua_State *L)
Definition: l_noise.cpp:179
Noise * noise
Definition: l_noise.h:65
static int l_get_2d_map(lua_State *L)
Definition: l_noise.cpp:155
static int create_object(lua_State *L)
Definition: l_noise.cpp:320
~LuaPerlinNoiseMap()
Definition: l_noise.cpp:149
static const char className[]
Definition: l_noise.h:98
static int l_get_map_slice(lua_State *L)
Definition: l_noise.cpp:295
static int gc_object(lua_State *L)
Definition: l_noise.cpp:335
bool is3D() const
Definition: l_noise.h:87
Definition: l_noise.h:30
static void packOut(lua_State *L, void *ptr)
Definition: l_noise.cpp:100
NoiseParams np
Definition: l_noise.h:32
static const char className[]
Definition: l_noise.h:57
static int create_object(lua_State *L)
Definition: l_noise.cpp:62
~LuaPerlinNoise()=default
static void * packIn(lua_State *L, int idx)
Definition: l_noise.cpp:94
static luaL_Reg methods[]
Definition: l_noise.h:34
static int l_get_2d(lua_State *L)
Definition: l_noise.cpp:40
static int gc_object(lua_State *L)
Definition: l_noise.cpp:86
static int l_get_3d(lua_State *L)
Definition: l_noise.cpp:51
Definition: l_noise.h:105
static const char className[]
Definition: l_noise.h:130
PseudoRandom m_pseudo
Definition: l_noise.h:107
static int gc_object(lua_State *L)
Definition: l_noise.cpp:453
LuaPseudoRandom(s32 seed)
Definition: l_noise.h:122
static int create_object(lua_State *L)
Definition: l_noise.cpp:440
static int l_get_state(lua_State *L)
Definition: l_noise.cpp:428
static const luaL_Reg methods[]
Definition: l_noise.h:109
static int l_next(lua_State *L)
Definition: l_noise.cpp:403
Definition: l_noise.h:175
static const char className[]
Definition: l_noise.h:200
static int l_next_bytes(lua_State *L)
Definition: l_noise.cpp:605
static int create_object(lua_State *L)
Definition: l_noise.cpp:640
static const size_t RAND_BUF_SIZE
Definition: l_noise.h:177
static const luaL_Reg methods[]
Definition: l_noise.h:178
bool fillRandBuf()
Definition: l_noise.cpp:600
static int gc_object(lua_State *L)
Definition: l_noise.cpp:657
char m_rand_buf[RAND_BUF_SIZE]
Definition: l_noise.h:181
u32 m_rand_idx
Definition: l_noise.h:180
Definition: l_base.h:43
Definition: noise.h:146
u32 sz
Definition: noise.h:152
Definition: noise.h:89
Definition: noise.h:43
core::vector3d< s16 > v3s16
Definition: irr_v3d.h:28
static LightingParams params
Definition: light.cpp:40
#define idx(x, y)
Definition: noise.cpp:552
Definition: noise.h:119