annotate src/modules/graphics/opengl/wrap_ParticleSystem.cpp @ 1448:108ee2e81f65 default tip

Fix a case typo, imageData.h -> ImageData.h
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sat, 18 Jan 2014 13:57:44 +0100
parents c70c9e4d10f3
children 923a594c28d1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
1 /**
1282
b7f097053d74 Updated copyright text for the new year
Alex Szpakowski <slime73@gmail.com>
parents: 1192
diff changeset
2 * Copyright (c) 2006-2013 LOVE Development Team
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
3 *
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
4 * This software is provided 'as-is', without any express or implied
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
5 * warranty. In no event will the authors be held liable for any damages
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
6 * arising from the use of this software.
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
7 *
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
8 * Permission is granted to anyone to use this software for any purpose,
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
9 * including commercial applications, and to alter it and redistribute it
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
10 * freely, subject to the following restrictions:
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
11 *
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
12 * 1. The origin of this software must not be misrepresented; you must not
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
13 * claim that you wrote the original software. If you use this software
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
14 * in a product, an acknowledgment in the product documentation would be
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
15 * appreciated but is not required.
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
16 * 2. Altered source versions must be plainly marked as such, and must not be
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
17 * misrepresented as being the original software.
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
18 * 3. This notice may not be removed or altered from any source distribution.
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
19 **/
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
20
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
21 #include "wrap_ParticleSystem.h"
1352
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
22 #include "wrap_Quad.h"
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
23
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
24 #include "common/Vector.h"
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
25
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
26 #include <cstring>
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
27
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
28 namespace love
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
29 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
30 namespace graphics
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
31 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
32 namespace opengl
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
33 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
34
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
35 ParticleSystem *luax_checkparticlesystem(lua_State *L, int idx)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
36 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
37 return luax_checktype<ParticleSystem>(L, idx, "ParticleSystem", GRAPHICS_PARTICLE_SYSTEM_T);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
38 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
39
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
40 int w_ParticleSystem_setSprite(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
41 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
42 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
43 Image *i = luax_checkimage(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
44 t->setSprite(i);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
45 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
46 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
47
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
48 int w_ParticleSystem_setBufferSize(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
49 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
50 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
51 int arg1 = luaL_checkint(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
52 t->setBufferSize((unsigned int)arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
53 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
54 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
55
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
56 int w_ParticleSystem_setEmissionRate(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
57 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
58 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
59 int arg1 = luaL_checkint(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
60 t->setEmissionRate((unsigned int)arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
61 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
62 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
63
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
64 int w_ParticleSystem_setLifetime(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
65 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
66 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
67 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
68 t->setLifetime(arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
69 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
70 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
71
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
72 int w_ParticleSystem_setParticleLife(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
73 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
74 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
75 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
76 float arg2 = (float)luaL_optnumber(L, 3, arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
77 t->setParticleLife(arg1, arg2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
78 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
79 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
80
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
81 int w_ParticleSystem_setPosition(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
82 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
83 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
84 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
85 float arg2 = (float)luaL_checknumber(L, 3);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
86 t->setPosition(arg1, arg2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
87 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
88 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
89
1127
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
90 int w_ParticleSystem_setAreaSpread(lua_State *L)
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
91 {
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
92 ParticleSystem *t = luax_checkparticlesystem(L, 1);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
93
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
94 ParticleSystem::AreaSpreadDistribution distribution;
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
95 const char *str = luaL_checkstring(L, 2);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
96 if (!ParticleSystem::getConstant(str, distribution))
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
97 return luaL_error(L, "Invalid distribution: '%s'", str);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
98
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
99 float x = (float)luaL_checknumber(L, 3);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
100 float y = (float)luaL_checknumber(L, 4);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
101 if (x < 0.0f || y < 0.0f)
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
102 return luaL_error(L, "Invalid area spread parameters (must be >= 0)");
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
103
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
104 t->setAreaSpread(distribution, x, y);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
105 return 0;
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
106 }
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
107
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
108 int w_ParticleSystem_setDirection(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
109 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
110 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
111 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
112 t->setDirection(arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
113 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
114 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
115
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
116 int w_ParticleSystem_setSpread(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
117 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
118 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
119 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
120 t->setSpread(arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
121 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
122 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
123
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
124 int w_ParticleSystem_setRelativeDirection(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
125 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
126 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
127 bool arg1 = (bool)luax_toboolean(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
128 t->setRelativeDirection(arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
129 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
130 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
131
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
132 int w_ParticleSystem_setSpeed(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
133 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
134 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
135 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
136 float arg2 = (float)luaL_optnumber(L, 3, arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
137 t->setSpeed(arg1, arg2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
138 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
139 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
140
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
141 int w_ParticleSystem_setGravity(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
142 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
143 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
144 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
145 float arg2 = (float)luaL_optnumber(L, 3, arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
146 t->setGravity(arg1, arg2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
147 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
148 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
149
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
150 int w_ParticleSystem_setRadialAcceleration(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
151 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
152 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
153 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
154 float arg2 = (float)luaL_optnumber(L, 3, arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
155 t->setRadialAcceleration(arg1, arg2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
156 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
157 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
158
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
159 int w_ParticleSystem_setTangentialAcceleration(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
160 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
161 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
162 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
163 float arg2 = (float)luaL_optnumber(L, 3, arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
164 t->setTangentialAcceleration(arg1, arg2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
165 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
166 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
167
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
168 int w_ParticleSystem_setSizes(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
169 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
170 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
171 size_t nSizes = lua_gettop(L) - 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
172
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
173 if (nSizes > 8)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
174 return luaL_error(L, "At most eight (8) sizes may be used.");
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
175
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
176 if (nSizes <= 1)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
177 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
178 float size = luax_checkfloat(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
179 t->setSize(size);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
180 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
181 else
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
182 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
183 std::vector<float> sizes(nSizes);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
184 for (size_t i = 0; i < nSizes; ++i)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
185 sizes[i] = luax_checkfloat(L, 1 + i + 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
186
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
187 t->setSize(sizes);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
188 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
189 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
190 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
191
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
192 int w_ParticleSystem_setSizeVariation(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
193 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
194 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
195 float arg1 = (float)luaL_checknumber(L, 2);
1192
bf8e12d0015f Enfore limits on ParticleSystem:setSizeVariation (issue #545)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1127
diff changeset
196 if (arg1 < 0.0f || arg1 > 1.0f)
bf8e12d0015f Enfore limits on ParticleSystem:setSizeVariation (issue #545)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1127
diff changeset
197 return luaL_error(L, "Size variation has to be between 0 and 1, inclusive.");
bf8e12d0015f Enfore limits on ParticleSystem:setSizeVariation (issue #545)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1127
diff changeset
198
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
199 t->setSizeVariation(arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
200 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
201 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
202
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
203 int w_ParticleSystem_setRotation(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
204 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
205 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
206 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
207 float arg2 = (float)luaL_optnumber(L, 3, arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
208 t->setRotation(arg1, arg2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
209 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
210 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
211
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
212 int w_ParticleSystem_setSpin(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
213 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
214 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
215 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
216 float arg2 = (float)luaL_optnumber(L, 3, arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
217 float arg3 = (float)luaL_optnumber(L, 4, 0);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
218 t->setSpin(arg1, arg2, arg3);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
219 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
220 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
221
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
222 int w_ParticleSystem_setSpinVariation(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
223 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
224 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
225 float arg1 = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
226 t->setSpinVariation(arg1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
227 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
228 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
229
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
230 int w_ParticleSystem_setColors(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
231 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
232 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
233
1367
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
234 if (lua_istable(L, 2)) // setColors({r,g,b,a}, {r,g,b,a}, ...)
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
235 {
1367
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
236 size_t nColors = lua_gettop(L) - 1;
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
237
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
238 if (nColors > 8)
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
239 return luaL_error(L, "At most eight (8) colors may be used.");
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
240
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
241 std::vector<Color> colors(nColors);
1367
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
242
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
243 for (size_t i = 0; i < nColors; i++)
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
244 {
1367
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
245 luaL_checktype(L, i + 2, LUA_TTABLE);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
246
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
247 if (lua_objlen(L, i + 2) < 3)
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
248 return luaL_argerror(L, i + 2, "expected 4 color components");
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
249
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
250 for (int j = 0; j < 4; j++)
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
251 // push args[i+2][j+1] onto the stack
1417
c70c9e4d10f3 Cleaned up some Lua binding code
Alex Szpakowski <slime73@gmail.com>
parents: 1408
diff changeset
252 lua_rawgeti(L, i + 2, j + 1);
1367
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
253
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
254 int r = luaL_checkint(L, -4);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
255 int g = luaL_checkint(L, -3);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
256 int b = luaL_checkint(L, -2);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
257 int a = luaL_optint(L, -1, 255);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
258
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
259 // pop the color components from the stack
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
260 lua_pop(L, 4);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
261
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
262 colors[i] = Color(r, g, b, a);
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
263 }
1367
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
264
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
265 t->setColor(colors);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
266 }
1367
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
267 else // setColors(r,g,b,a, r,g,b,a, ...)
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
268 {
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
269 int cargs = lua_gettop(L) - 1;
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
270 size_t nColors = (cargs + 3) / 4; // nColors = ceil(color_args / 4)
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
271
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
272 if (cargs % 4 != 0 || cargs == 0)
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
273 return luaL_error(L, "Expected red, green, blue, and alpha. Only got %d of 4 components.", cargs % 4);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
274
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
275 if (nColors > 8)
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
276 return luaL_error(L, "At most eight (8) colors may be used.");
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
277
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
278 if (nColors == 1)
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
279 {
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
280 int r = luaL_checkint(L, 2);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
281 int g = luaL_checkint(L, 3);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
282 int b = luaL_checkint(L, 4);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
283 int a = luaL_checkint(L, 5);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
284 t->setColor(Color(r,g,b,a));
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
285 }
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
286 else
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
287 {
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
288 std::vector<Color> colors(nColors);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
289 for (size_t i = 0; i < nColors; ++i)
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
290 {
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
291 int r = luaL_checkint(L, 1 + i*4 + 1);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
292 int g = luaL_checkint(L, 1 + i*4 + 2);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
293 int b = luaL_checkint(L, 1 + i*4 + 3);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
294 int a = luaL_checkint(L, 1 + i*4 + 4);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
295 colors[i] = Color(r,g,b,a);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
296 }
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
297 t->setColor(colors);
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
298 }
a5f6c26fe799 ParticleSystem:setColors now accepts multiple color arrays (issue #440)
Alex Szpakowski <slime73@gmail.com>
parents: 1360
diff changeset
299 }
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
300
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
301 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
302 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
303
1352
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
304 int w_ParticleSystem_setQuads(lua_State *L)
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
305 {
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
306 ParticleSystem *t = luax_checkparticlesystem(L, 1);
1353
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
307
1352
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
308 int nQuads = lua_gettop(L) - 1;
1353
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
309 if (lua_istable(L, 2))
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
310 nQuads = lua_objlen(L, 2);
1352
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
311
1353
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
312 // Remove all quads if no argument is given.
1352
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
313 if (nQuads == 0)
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
314 {
1353
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
315 t->setQuads();
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
316 return 0;
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
317 }
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
318
1360
f1c353a5067d Cleaned up some ParticleSystem and Quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1353
diff changeset
319 std::vector<Quad *> quads(nQuads);
1353
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
320
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
321 if (lua_istable(L, 2))
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
322 {
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
323 for (int i = 0; i < nQuads; i++)
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
324 {
1417
c70c9e4d10f3 Cleaned up some Lua binding code
Alex Szpakowski <slime73@gmail.com>
parents: 1408
diff changeset
325 lua_rawgeti(L, 2, i + 1); // array index
1360
f1c353a5067d Cleaned up some ParticleSystem and Quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1353
diff changeset
326 quads[i] = luax_checkquad(L, -1);
1353
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
327 lua_pop(L, 1);
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
328 }
1352
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
329 }
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
330 else
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
331 {
1353
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
332 for (int i = 0; i < nQuads; i++)
1360
f1c353a5067d Cleaned up some ParticleSystem and Quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1353
diff changeset
333 quads[i] = luax_checkquad(L, i + 2);
1352
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
334 }
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
335
1353
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
336 t->setQuads(quads);
c3c9d6ed3e21 ParticleSystem:setQuads can now accept a table argument, cleaned up the ParticleSystem quad code
Alex Szpakowski <slime73@gmail.com>
parents: 1352
diff changeset
337
1352
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
338 return 0;
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
339 }
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
340
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
341 int w_ParticleSystem_setOffset(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
342 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
343 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
344 float x = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
345 float y = (float)luaL_checknumber(L, 3);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
346 t->setOffset(x, y);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
347 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
348 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
349
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
350 int w_ParticleSystem_getX(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
351 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
352 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
353 lua_pushnumber(L, t->getX());
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
354 return 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
355 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
356
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
357 int w_ParticleSystem_getY(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
358 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
359 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
360 lua_pushnumber(L, t->getY());
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
361 return 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
362 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
363
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
364 int w_ParticleSystem_getPosition(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
365 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
366 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
367 const love::Vector &p = t->getPosition();
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
368 lua_pushnumber(L, p.x);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
369 lua_pushnumber(L, p.y);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
370 return 2;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
371 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
372
1127
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
373 int w_ParticleSystem_getAreaSpread(lua_State *L)
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
374 {
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
375 ParticleSystem *t = luax_checkparticlesystem(L, 1);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
376 ParticleSystem::AreaSpreadDistribution distribution = t-> getAreaSpreadDistribution();
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
377 const char *str;
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
378 ParticleSystem::getConstant(distribution, str);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
379 const love::Vector &p = t->getAreaSpreadParameters();
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
380
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
381 lua_pushstring(L, str);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
382 lua_pushnumber(L, p.x);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
383 lua_pushnumber(L, p.y);
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
384
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
385 return 3;
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
386 }
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
387
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
388 int w_ParticleSystem_getDirection(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
389 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
390 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
391 lua_pushnumber(L, t->getDirection());
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
392 return 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
393 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
394
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
395 int w_ParticleSystem_getSpread(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
396 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
397 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
398 lua_pushnumber(L, t->getSpread());
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
399 return 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
400 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
401
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
402 int w_ParticleSystem_getOffsetX(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
403 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
404 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
405 lua_pushnumber(L, t->getOffsetX());
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
406 return 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
407 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
408
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
409 int w_ParticleSystem_getOffsetY(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
410 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
411 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
412 lua_pushnumber(L, t->getOffsetY());
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
413 return 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
414 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
415
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
416 int w_ParticleSystem_count(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
417 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
418 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
419 lua_pushnumber(L, t->count());
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
420 return 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
421 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
422
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
423 int w_ParticleSystem_start(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
424 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
425 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
426 t->start();
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
427 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
428 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
429
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
430 int w_ParticleSystem_stop(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
431 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
432 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
433 t->stop();
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
434 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
435 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
436
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
437 int w_ParticleSystem_pause(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
438 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
439 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
440 t->pause();
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
441 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
442 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
443
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
444 int w_ParticleSystem_reset(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
445 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
446 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
447 t->reset();
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
448 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
449 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
450
1408
107d80a59bca Added ParticleSystem:emit(num) (issue #577)
Alex Szpakowski <slime73@gmail.com>
parents: 1367
diff changeset
451 int w_ParticleSystem_emit(lua_State *L)
107d80a59bca Added ParticleSystem:emit(num) (issue #577)
Alex Szpakowski <slime73@gmail.com>
parents: 1367
diff changeset
452 {
107d80a59bca Added ParticleSystem:emit(num) (issue #577)
Alex Szpakowski <slime73@gmail.com>
parents: 1367
diff changeset
453 ParticleSystem *t = luax_checkparticlesystem(L, 1);
107d80a59bca Added ParticleSystem:emit(num) (issue #577)
Alex Szpakowski <slime73@gmail.com>
parents: 1367
diff changeset
454 int num = luaL_checkint(L, 2);
107d80a59bca Added ParticleSystem:emit(num) (issue #577)
Alex Szpakowski <slime73@gmail.com>
parents: 1367
diff changeset
455 t->emit(num);
107d80a59bca Added ParticleSystem:emit(num) (issue #577)
Alex Szpakowski <slime73@gmail.com>
parents: 1367
diff changeset
456 return 0;
107d80a59bca Added ParticleSystem:emit(num) (issue #577)
Alex Szpakowski <slime73@gmail.com>
parents: 1367
diff changeset
457 }
107d80a59bca Added ParticleSystem:emit(num) (issue #577)
Alex Szpakowski <slime73@gmail.com>
parents: 1367
diff changeset
458
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
459 int w_ParticleSystem_isActive(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
460 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
461 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
462 luax_pushboolean(L, t->isActive());
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
463 return 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
464 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
465
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
466 int w_ParticleSystem_isEmpty(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
467 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
468 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
469 luax_pushboolean(L, t->isEmpty());
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
470 return 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
471 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
472
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
473 int w_ParticleSystem_isFull(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
474 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
475 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
476 luax_pushboolean(L, t->isFull());
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
477 return 1;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
478 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
479
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
480 int w_ParticleSystem_update(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
481 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
482 ParticleSystem *t = luax_checkparticlesystem(L, 1);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
483 float dt = (float)luaL_checknumber(L, 2);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
484 t->update(dt);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
485 return 0;
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
486 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
487
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
488 static const luaL_Reg functions[] =
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
489 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
490 { "setSprite", w_ParticleSystem_setSprite },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
491 { "setBufferSize", w_ParticleSystem_setBufferSize },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
492 { "setEmissionRate", w_ParticleSystem_setEmissionRate },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
493 { "setLifetime", w_ParticleSystem_setLifetime },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
494 { "setParticleLife", w_ParticleSystem_setParticleLife },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
495 { "setPosition", w_ParticleSystem_setPosition },
1127
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
496 { "setAreaSpread", w_ParticleSystem_setAreaSpread },
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
497 { "setDirection", w_ParticleSystem_setDirection },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
498 { "setSpread", w_ParticleSystem_setSpread },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
499 { "setRelativeDirection", w_ParticleSystem_setRelativeDirection },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
500 { "setSpeed", w_ParticleSystem_setSpeed },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
501 { "setGravity", w_ParticleSystem_setGravity },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
502 { "setRadialAcceleration", w_ParticleSystem_setRadialAcceleration },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
503 { "setTangentialAcceleration", w_ParticleSystem_setTangentialAcceleration },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
504 { "setSizes", w_ParticleSystem_setSizes },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
505 { "setSizeVariation", w_ParticleSystem_setSizeVariation },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
506 { "setRotation", w_ParticleSystem_setRotation },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
507 { "setSpin", w_ParticleSystem_setSpin },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
508 { "setSpinVariation", w_ParticleSystem_setSpinVariation },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
509 { "setColors", w_ParticleSystem_setColors },
1352
470a47bebfb3 Added ParticleSystem:setQuads(q1, q2, ...), quads are chosen based on current particle lifetime in a similar style to ParticleSystem:setColors
Alex Szpakowski <slime73@gmail.com>
parents: 1282
diff changeset
510 { "setQuads", w_ParticleSystem_setQuads },
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
511 { "setOffset", w_ParticleSystem_setOffset },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
512 { "getX", w_ParticleSystem_getX },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
513 { "getY", w_ParticleSystem_getY },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
514 { "getPosition", w_ParticleSystem_getPosition },
1127
13e6ca38c28c Fix issue #437: Area-based particle spawn.
vrld <vrld@vrld.org>
parents: 1096
diff changeset
515 { "getAreaSpread", w_ParticleSystem_getAreaSpread },
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
516 { "getDirection", w_ParticleSystem_getDirection },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
517 { "getSpread", w_ParticleSystem_getSpread },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
518 { "getOffsetX", w_ParticleSystem_getOffsetX },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
519 { "getOffsetY", w_ParticleSystem_getOffsetY },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
520 { "count", w_ParticleSystem_count },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
521 { "start", w_ParticleSystem_start },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
522 { "stop", w_ParticleSystem_stop },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
523 { "pause", w_ParticleSystem_pause },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
524 { "reset", w_ParticleSystem_reset },
1408
107d80a59bca Added ParticleSystem:emit(num) (issue #577)
Alex Szpakowski <slime73@gmail.com>
parents: 1367
diff changeset
525 { "emit", w_ParticleSystem_emit },
1096
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
526 { "isActive", w_ParticleSystem_isActive },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
527 { "isEmpty", w_ParticleSystem_isEmpty },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
528 { "isFull", w_ParticleSystem_isFull },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
529 { "update", w_ParticleSystem_update },
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
530 { 0, 0 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
531 };
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
532
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
533 extern "C" int luaopen_particlesystem(lua_State *L)
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
534 {
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
535 return luax_register_type(L, "ParticleSystem", functions);
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
536 }
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
537
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
538 } // opengl
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
539 } // graphics
86a44f2bc38f CRLF to LF
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1086
diff changeset
540 } // love