3 Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation; either version 2.1 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public License along
16 with this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 #include "lua_api/l_base.h"
30 class LuaPerlinNoise : public ModApiBase {
33 static const char className[];
34 static const luaL_reg methods[];
39 static int gc_object(lua_State *L);
41 static int l_get2d(lua_State *L);
42 static int l_get3d(lua_State *L);
45 LuaPerlinNoise(NoiseParams *params);
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);
52 static LuaPerlinNoise *checkobject(lua_State *L, int narg);
54 static void Register(lua_State *L);
60 class LuaPerlinNoiseMap : public ModApiBase {
64 static const char className[];
65 static const luaL_reg methods[];
70 static int gc_object(lua_State *L);
72 static int l_get2dMap(lua_State *L);
73 static int l_get2dMap_flat(lua_State *L);
74 static int l_get3dMap(lua_State *L);
75 static int l_get3dMap_flat(lua_State *L);
77 static int l_calc2dMap(lua_State *L);
78 static int l_calc3dMap(lua_State *L);
79 static int l_getMapSlice(lua_State *L);
82 LuaPerlinNoiseMap(NoiseParams *np, s32 seed, v3s16 size);
86 // LuaPerlinNoiseMap(np, size)
87 // Creates an LuaPerlinNoiseMap and leaves it on top of stack
88 static int create_object(lua_State *L);
90 static LuaPerlinNoiseMap *checkobject(lua_State *L, int narg);
92 static void Register(lua_State *L);
98 class LuaPseudoRandom : public ModApiBase {
100 PseudoRandom m_pseudo;
102 static const char className[];
103 static const luaL_reg methods[];
105 // Exported functions
108 static int gc_object(lua_State *L);
110 // next(self, min=0, max=32767) -> get next value
111 static int l_next(lua_State *L);
114 LuaPseudoRandom(s32 seed) :
117 // LuaPseudoRandom(seed)
118 // Creates an LuaPseudoRandom and leaves it on top of stack
119 static int create_object(lua_State *L);
121 static LuaPseudoRandom *checkobject(lua_State *L, int narg);
123 static void Register(lua_State *L);
129 class LuaPcgRandom : public ModApiBase {
133 static const char className[];
134 static const luaL_reg methods[];
136 // Exported functions
139 static int gc_object(lua_State *L);
141 // next(self, min=-2147483648, max=2147483647) -> get next value
142 static int l_next(lua_State *L);
144 // rand_normal_dist(self, min=-2147483648, max=2147483647, num_trials=6) ->
145 // get next normally distributed random value
146 static int l_rand_normal_dist(lua_State *L);
149 LuaPcgRandom(u64 seed) :
151 LuaPcgRandom(u64 seed, u64 seq) :
154 // LuaPcgRandom(seed)
155 // Creates an LuaPcgRandom and leaves it on top of stack
156 static int create_object(lua_State *L);
158 static LuaPcgRandom *checkobject(lua_State *L, int narg);
160 static void Register(lua_State *L);
167 class LuaSecureRandom : public ModApiBase {
169 static const size_t RAND_BUF_SIZE = 2048;
170 static const char className[];
171 static const luaL_reg methods[];
174 char m_rand_buf[RAND_BUF_SIZE];
176 // Exported functions
179 static int gc_object(lua_State *L);
181 // next_bytes(self, count) -> get count many bytes
182 static int l_next_bytes(lua_State *L);
188 // Creates an LuaSecureRandom and leaves it on top of stack
189 static int create_object(lua_State *L);
191 static LuaSecureRandom *checkobject(lua_State *L, int narg);
193 static void Register(lua_State *L);
196 #endif /* L_NOISE_H_ */