Allow vertical axis particle rotation constraint

Use tables for adding particles, deprecate former way.

separate particles(pawner) definition, add default values, work with no
arguments
This commit is contained in:
khonkhortisan 2013-04-22 11:35:10 -07:00 committed by ShadowNinja
parent a4c5f10ecf
commit 2b1eff7725
10 changed files with 266 additions and 93 deletions

@ -1462,30 +1462,20 @@ minetest.ban_player(name) -> ban a player
minetest.unban_player_or_ip(name) -> unban player or IP address
Particles:
minetest.add_particle(pos, velocity, acceleration, expirationtime,
minetest.add_particle(particle definition)
^ Deprecated: minetest.add_particle(pos, velocity, acceleration, expirationtime,
size, collisiondetection, texture, playername)
^ Spawn particle at pos with velocity and acceleration
^ Disappears after expirationtime seconds
^ collisiondetection: if true collides with physical objects
^ Uses texture (string)
^ Playername is optional, if specified spawns particle only on the player's client
minetest.add_particlespawner(amount, time,
minetest.add_particlespawner(particlespawner definition)
^ Add a particlespawner, an object that spawns an amount of particles over time seconds
^ Returns an id
^ Deprecated: minetest.add_particlespawner(amount, time,
minpos, maxpos,
minvel, maxvel,
minacc, maxacc,
minexptime, maxexptime,
minsize, maxsize,
collisiondetection, texture, playername)
^ Add a particlespawner, an object that spawns an amount of particles over time seconds
^ The particle's properties are random values in between the boundings:
^ minpos/maxpos, minvel/maxvel (velocity), minacc/maxacc (acceleration),
^ minsize/maxsize, minexptime/maxexptime (expirationtime)
^ collisiondetection: if true uses collisiondetection
^ Uses texture (string)
^ Playername is optional, if specified spawns particle only on the player's client
^ If time is 0 has infinite lifespan and spawns the amount on a per-second base
^ Returns and id
minetest.delete_particlespawner(id, player)
^ Delete ParticleSpawner with id (return value from add_particlespawner)
@ -2443,3 +2433,50 @@ HUD Definition (hud_add, hud_get)
offset = {x=0, y=0},
^ See "HUD Element Types"
}
Particle definition (add_particle)
{
pos = {x=0, y=0, z=0},
velocity = {x=0, y=0, z=0},
acceleration = {x=0, y=0, z=0},
^ Spawn particle at pos with velocity and acceleration
expirationtime = 1,
^ Disappears after expirationtime seconds
size = 1,
collisiondetection = false,
^ collisiondetection: if true collides with physical objects
vertical = false,
^ vertical: if true faces player using y axis only
texture = "image.png",
^ Uses texture (string)
playername = "singleplayer"
^ Playername is optional, if specified spawns particle only on the player's client
}
Particlespawner definition (add_particlespawner)
{
amount = 1,
time = 1,
^ If time is 0 has infinite lifespan and spawns the amount on a per-second base
minpos = {x=0, y=0, z=0},
maxpos = {x=0, y=0, z=0},
minvel = {x=0, y=0, z=0},
maxvel = {x=0, y=0, z=0},
minacc = {x=0, y=0, z=0},
maxacc = {x=0, y=0, z=0},
minexptime = 1,
maxexptime = 1,
minsize = 1,
maxsize = 1,
^ The particle's properties are random values in between the boundings:
^ minpos/maxpos, minvel/maxvel (velocity), minacc/maxacc (acceleration),
^ minsize/maxsize, minexptime/maxexptime (expirationtime)
collisiondetection = false,
^ collisiondetection: if true uses collisiondetection
vertical = false,
^ vertical: if true faces player using y axis only
texture = "image.png",
^ Uses texture (string)
playername = "singleplayer"
^ Playername is optional, if specified spawns particle only on the player's client
}

@ -1844,6 +1844,10 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
float size = readF1000(is);
bool collisiondetection = readU8(is);
std::string texture = deSerializeLongString(is);
bool vertical = false;
try {
vertical = readU8(is);
} catch (...) {}
ClientEvent event;
event.type = CE_SPAWN_PARTICLE;
@ -1855,6 +1859,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
event.spawn_particle.size = size;
event.spawn_particle.collisiondetection =
collisiondetection;
event.spawn_particle.vertical = vertical;
event.spawn_particle.texture = new std::string(texture);
m_client_event_queue.push_back(event);
@ -1879,6 +1884,10 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
bool collisiondetection = readU8(is);
std::string texture = deSerializeLongString(is);
u32 id = readU32(is);
bool vertical = false;
try {
vertical = readU8(is);
} catch (...) {}
ClientEvent event;
event.type = CE_ADD_PARTICLESPAWNER;
@ -1897,6 +1906,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
event.add_particlespawner.minsize = minsize;
event.add_particlespawner.maxsize = maxsize;
event.add_particlespawner.collisiondetection = collisiondetection;
event.add_particlespawner.vertical = vertical;
event.add_particlespawner.texture = new std::string(texture);
event.add_particlespawner.id = id;

@ -168,6 +168,7 @@ struct ClientEvent
f32 expirationtime;
f32 size;
bool collisiondetection;
bool vertical;
std::string *texture;
} spawn_particle;
struct{
@ -184,6 +185,7 @@ struct ClientEvent
f32 minsize;
f32 maxsize;
bool collisiondetection;
bool vertical;
std::string *texture;
u32 id;
} add_particlespawner;

@ -419,6 +419,7 @@ enum ToClientCommand
f1000 expirationtime
f1000 size
u8 bool collisiondetection
u8 bool vertical
u32 len
u8[len] texture
*/
@ -439,6 +440,7 @@ enum ToClientCommand
f1000 minsize
f1000 maxsize
u8 bool collisiondetection
u8 bool vertical
u32 len
u8[len] texture
u32 id

@ -2321,6 +2321,7 @@ void the_game(
event.spawn_particle.expirationtime,
event.spawn_particle.size,
event.spawn_particle.collisiondetection,
event.spawn_particle.vertical,
texture,
v2f(0.0, 0.0),
v2f(1.0, 1.0));
@ -2345,6 +2346,7 @@ void the_game(
event.add_particlespawner.minsize,
event.add_particlespawner.maxsize,
event.add_particlespawner.collisiondetection,
event.add_particlespawner.vertical,
texture,
event.add_particlespawner.id);
}

@ -57,6 +57,7 @@ Particle::Particle(
float expirationtime,
float size,
bool collisiondetection,
bool vertical,
video::ITexture *texture,
v2f texpos,
v2f texsize
@ -86,6 +87,7 @@ Particle::Particle(
m_player = player;
m_size = size;
m_collisiondetection = collisiondetection;
m_vertical = vertical;
// Irrlicht stuff
m_collisionbox = core::aabbox3d<f32>
@ -199,8 +201,13 @@ void Particle::updateVertices()
for(u16 i=0; i<4; i++)
{
if (m_vertical) {
v3f ppos = m_player->getPosition()/BS;
m_vertices[i].Pos.rotateXZBy(atan2(ppos.Z-m_pos.Z, ppos.X-m_pos.X)/core::DEGTORAD+90);
} else {
m_vertices[i].Pos.rotateYZBy(m_player->getPitch());
m_vertices[i].Pos.rotateXZBy(m_player->getYaw());
}
m_box.addInternalPoint(m_vertices[i].Pos);
m_vertices[i].Pos += m_pos*BS;
}
@ -293,6 +300,7 @@ void addNodeParticle(IGameDef* gamedef, scene::ISceneManager* smgr,
rand()%100/100., // expiration time
visual_size,
true,
false,
texture,
texpos,
texsize);
@ -306,7 +314,7 @@ ParticleSpawner::ParticleSpawner(IGameDef* gamedef, scene::ISceneManager *smgr,
u16 amount, float time,
v3f minpos, v3f maxpos, v3f minvel, v3f maxvel, v3f minacc, v3f maxacc,
float minexptime, float maxexptime, float minsize, float maxsize,
bool collisiondetection, video::ITexture *texture, u32 id)
bool collisiondetection, bool vertical, video::ITexture *texture, u32 id)
{
m_gamedef = gamedef;
m_smgr = smgr;
@ -324,6 +332,7 @@ ParticleSpawner::ParticleSpawner(IGameDef* gamedef, scene::ISceneManager *smgr,
m_minsize = minsize;
m_maxsize = maxsize;
m_collisiondetection = collisiondetection;
m_vertical = vertical;
m_texture = texture;
m_time = 0;
@ -372,6 +381,7 @@ void ParticleSpawner::step(float dtime, ClientEnvironment &env)
exptime,
size,
m_collisiondetection,
m_vertical,
m_texture,
v2f(0.0, 0.0),
v2f(1.0, 1.0));
@ -410,6 +420,7 @@ void ParticleSpawner::step(float dtime, ClientEnvironment &env)
exptime,
size,
m_collisiondetection,
m_vertical,
m_texture,
v2f(0.0, 0.0),
v2f(1.0, 1.0));

@ -42,6 +42,7 @@ class Particle : public scene::ISceneNode
float expirationtime,
float size,
bool collisiondetection,
bool vertical,
video::ITexture *texture,
v2f texpos,
v2f texsize
@ -92,6 +93,7 @@ private:
float m_size;
u8 m_light;
bool m_collisiondetection;
bool m_vertical;
};
class ParticleSpawner
@ -108,6 +110,7 @@ class ParticleSpawner
float minexptime, float maxexptime,
float minsize, float maxsize,
bool collisiondetection,
bool vertical,
video::ITexture *texture,
u32 id);
@ -138,6 +141,7 @@ class ParticleSpawner
video::ITexture *m_texture;
std::vector<float> m_spawntimes;
bool m_collisiondetection;
bool m_vertical;
};
void allparticles_step (float dtime, ClientEnvironment &env);

@ -22,85 +22,173 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "common/c_converter.h"
#include "server.h"
// add_particle(pos, velocity, acceleration, expirationtime,
// size, collisiondetection, texture, player)
// add_particle({pos=, velocity=, acceleration=, expirationtime=,
// size=, collisiondetection=, vertical=, texture=, player=})
// pos/velocity/acceleration = {x=num, y=num, z=num}
// expirationtime = num (seconds)
// size = num
// collisiondetection = bool
// vertical = bool
// texture = e.g."default_wood.png"
int ModApiParticles::l_add_particle(lua_State *L)
{
// Get parameters
v3f pos = check_v3f(L, 1);
v3f vel = check_v3f(L, 2);
v3f acc = check_v3f(L, 3);
float expirationtime = luaL_checknumber(L, 4);
float size = luaL_checknumber(L, 5);
bool collisiondetection = lua_toboolean(L, 6);
std::string texture = luaL_checkstring(L, 7);
v3f pos, vel, acc;
pos= vel= acc= v3f(0, 0, 0);
float expirationtime, size;
expirationtime= size= 1;
bool collisiondetection, vertical;
collisiondetection= vertical= false;
std::string texture = "";
const char *playername = "";
if (lua_gettop(L) == 8) // only spawn for a single player
if (lua_gettop(L) > 1) // deprecated
{
const char *playername = luaL_checkstring(L, 8);
getServer(L)->spawnParticle(playername,
pos, vel, acc, expirationtime,
size, collisiondetection, texture);
pos = check_v3f(L, 1);
vel = check_v3f(L, 2);
acc = check_v3f(L, 3);
expirationtime = luaL_checknumber(L, 4);
size = luaL_checknumber(L, 5);
collisiondetection = lua_toboolean(L, 6);
texture = luaL_checkstring(L, 7);
if (lua_gettop(L) == 8) // only spawn for a single player
playername = luaL_checkstring(L, 8);
}
else // spawn for all players
else if (lua_istable(L, 1))
{
int table = lua_gettop(L);
lua_pushnil(L);
while (lua_next(L, table) != 0)
{
const char *key = lua_tostring(L, -2);
if(strcmp(key,"pos")==0){
pos=check_v3f(L, -1);
}else if(strcmp(key,"vel")==0){
vel=check_v3f(L, -1);
}else if(strcmp(key,"acc")==0){
acc=check_v3f(L, -1);
}else if(strcmp(key,"expirationtime")==0){
expirationtime=luaL_checknumber(L, -1);
}else if(strcmp(key,"size")==0){
size=luaL_checknumber(L, -1);
}else if(strcmp(key,"collisiondetection")==0){
collisiondetection=lua_toboolean(L, -1);
}else if(strcmp(key,"vertical")==0){
vertical=lua_toboolean(L, -1);
}else if(strcmp(key,"texture")==0){
texture=luaL_checkstring(L, -1);
}else if(strcmp(key,"playername")==0){
playername=luaL_checkstring(L, -1);
}
lua_pop(L, 1);
}
}
if (strcmp(playername, "")==0) // spawn for all players
{
getServer(L)->spawnParticleAll(pos, vel, acc,
expirationtime, size, collisiondetection, texture);
expirationtime, size, collisiondetection, vertical, texture);
}
else
{
getServer(L)->spawnParticle(playername,
pos, vel, acc, expirationtime,
size, collisiondetection, vertical, texture);
}
return 1;
}
// add_particlespawner(amount, time,
// minpos, maxpos,
// minvel, maxvel,
// minacc, maxacc,
// minexptime, maxexptime,
// minsize, maxsize,
// collisiondetection,
// texture,
// player)
// add_particlespawner({amount=, time=,
// minpos=, maxpos=,
// minvel=, maxvel=,
// minacc=, maxacc=,
// minexptime=, maxexptime=,
// minsize=, maxsize=,
// collisiondetection=,
// vertical=,
// texture=,
// player=})
// minpos/maxpos/minvel/maxvel/minacc/maxacc = {x=num, y=num, z=num}
// minexptime/maxexptime = num (seconds)
// minsize/maxsize = num
// collisiondetection = bool
// vertical = bool
// texture = e.g."default_wood.png"
int ModApiParticles::l_add_particlespawner(lua_State *L)
{
// Get parameters
u16 amount = luaL_checknumber(L, 1);
float time = luaL_checknumber(L, 2);
v3f minpos = check_v3f(L, 3);
v3f maxpos = check_v3f(L, 4);
v3f minvel = check_v3f(L, 5);
v3f maxvel = check_v3f(L, 6);
v3f minacc = check_v3f(L, 7);
v3f maxacc = check_v3f(L, 8);
float minexptime = luaL_checknumber(L, 9);
float maxexptime = luaL_checknumber(L, 10);
float minsize = luaL_checknumber(L, 11);
float maxsize = luaL_checknumber(L, 12);
bool collisiondetection = lua_toboolean(L, 13);
std::string texture = luaL_checkstring(L, 14);
u16 amount = 1;
v3f minpos, maxpos, minvel, maxvel, minacc, maxacc;
minpos= maxpos= minvel= maxvel= minacc= maxacc= v3f(0, 0, 0);
float time, minexptime, maxexptime, minsize, maxsize;
time= minexptime= maxexptime= minsize= maxsize= 1;
bool collisiondetection, vertical;
collisiondetection= vertical= false;
std::string texture = "";
const char *playername = "";
if (lua_gettop(L) == 15) // only spawn for a single player
if (lua_gettop(L) > 1) //deprecated
{
const char *playername = luaL_checkstring(L, 15);
u32 id = getServer(L)->addParticleSpawner(playername,
amount, time,
minpos, maxpos,
minvel, maxvel,
minacc, maxacc,
minexptime, maxexptime,
minsize, maxsize,
collisiondetection,
texture);
lua_pushnumber(L, id);
amount = luaL_checknumber(L, 1);
time = luaL_checknumber(L, 2);
minpos = check_v3f(L, 3);
maxpos = check_v3f(L, 4);
minvel = check_v3f(L, 5);
maxvel = check_v3f(L, 6);
minacc = check_v3f(L, 7);
maxacc = check_v3f(L, 8);
minexptime = luaL_checknumber(L, 9);
maxexptime = luaL_checknumber(L, 10);
minsize = luaL_checknumber(L, 11);
maxsize = luaL_checknumber(L, 12);
collisiondetection = lua_toboolean(L, 13);
texture = luaL_checkstring(L, 14);
if (lua_gettop(L) == 15) // only spawn for a single player
playername = luaL_checkstring(L, 15);
}
else // spawn for all players
else if (lua_istable(L, 1))
{
int table = lua_gettop(L);
lua_pushnil(L);
while (lua_next(L, table) != 0)
{
const char *key = lua_tostring(L, -2);
if(strcmp(key,"amount")==0){
amount=luaL_checknumber(L, -1);
}else if(strcmp(key,"time")==0){
time=luaL_checknumber(L, -1);
}else if(strcmp(key,"minpos")==0){
minpos=check_v3f(L, -1);
}else if(strcmp(key,"maxpos")==0){
maxpos=check_v3f(L, -1);
}else if(strcmp(key,"minvel")==0){
minvel=check_v3f(L, -1);
}else if(strcmp(key,"maxvel")==0){
maxvel=check_v3f(L, -1);
}else if(strcmp(key,"minacc")==0){
minacc=check_v3f(L, -1);
}else if(strcmp(key,"maxacc")==0){
maxacc=check_v3f(L, -1);
}else if(strcmp(key,"minexptime")==0){
minexptime=luaL_checknumber(L, -1);
}else if(strcmp(key,"maxexptime")==0){
maxexptime=luaL_checknumber(L, -1);
}else if(strcmp(key,"minsize")==0){
minsize=luaL_checknumber(L, -1);
}else if(strcmp(key,"maxsize")==0){
maxsize=luaL_checknumber(L, -1);
}else if(strcmp(key,"collisiondetection")==0){
collisiondetection=lua_toboolean(L, -1);
}else if(strcmp(key,"vertical")==0){
vertical=lua_toboolean(L, -1);
}else if(strcmp(key,"texture")==0){
texture=luaL_checkstring(L, -1);
}else if(strcmp(key,"playername")==0){
playername=luaL_checkstring(L, -1);
}
lua_pop(L, 1);
}
}
if (strcmp(playername, "")==0) //spawn for all players
{
u32 id = getServer(L)->addParticleSpawnerAll( amount, time,
minpos, maxpos,
@ -109,6 +197,21 @@ int ModApiParticles::l_add_particlespawner(lua_State *L)
minexptime, maxexptime,
minsize, maxsize,
collisiondetection,
vertical,
texture);
lua_pushnumber(L, id);
}
else
{
u32 id = getServer(L)->addParticleSpawner(playername,
amount, time,
minpos, maxpos,
minvel, maxvel,
minacc, maxacc,
minexptime, maxexptime,
minsize, maxsize,
collisiondetection,
vertical,
texture);
lua_pushnumber(L, id);
}

@ -3573,7 +3573,7 @@ void Server::SendShowFormspecMessage(u16 peer_id, const std::string formspec,
// Spawns a particle on peer with peer_id
void Server::SendSpawnParticle(u16 peer_id, v3f pos, v3f velocity, v3f acceleration,
float expirationtime, float size, bool collisiondetection,
std::string texture)
bool vertical, std::string texture)
{
DSTACK(__FUNCTION_NAME);
@ -3586,6 +3586,7 @@ void Server::SendSpawnParticle(u16 peer_id, v3f pos, v3f velocity, v3f accelerat
writeF1000(os, size);
writeU8(os, collisiondetection);
os<<serializeLongString(texture);
writeU8(os, vertical);
// Make data buffer
std::string s = os.str();
@ -3597,7 +3598,7 @@ void Server::SendSpawnParticle(u16 peer_id, v3f pos, v3f velocity, v3f accelerat
// Spawns a particle on all peers
void Server::SendSpawnParticleAll(v3f pos, v3f velocity, v3f acceleration,
float expirationtime, float size, bool collisiondetection,
std::string texture)
bool vertical, std::string texture)
{
for(std::map<u16, RemoteClient*>::iterator
i = m_clients.begin();
@ -3610,14 +3611,14 @@ void Server::SendSpawnParticleAll(v3f pos, v3f velocity, v3f acceleration,
continue;
SendSpawnParticle(client->peer_id, pos, velocity, acceleration,
expirationtime, size, collisiondetection, texture);
expirationtime, size, collisiondetection, vertical, texture);
}
}
// Adds a ParticleSpawner on peer with peer_id
void Server::SendAddParticleSpawner(u16 peer_id, u16 amount, float spawntime, v3f minpos, v3f maxpos,
v3f minvel, v3f maxvel, v3f minacc, v3f maxacc, float minexptime, float maxexptime,
float minsize, float maxsize, bool collisiondetection, std::string texture, u32 id)
float minsize, float maxsize, bool collisiondetection, bool vertical, std::string texture, u32 id)
{
DSTACK(__FUNCTION_NAME);
@ -3639,6 +3640,7 @@ void Server::SendAddParticleSpawner(u16 peer_id, u16 amount, float spawntime, v3
writeU8(os, collisiondetection);
os<<serializeLongString(texture);
writeU32(os, id);
writeU8(os, vertical);
// Make data buffer
std::string s = os.str();
@ -3650,7 +3652,7 @@ void Server::SendAddParticleSpawner(u16 peer_id, u16 amount, float spawntime, v3
// Adds a ParticleSpawner on all peers
void Server::SendAddParticleSpawnerAll(u16 amount, float spawntime, v3f minpos, v3f maxpos,
v3f minvel, v3f maxvel, v3f minacc, v3f maxacc, float minexptime, float maxexptime,
float minsize, float maxsize, bool collisiondetection, std::string texture, u32 id)
float minsize, float maxsize, bool collisiondetection, bool vertical, std::string texture, u32 id)
{
for(std::map<u16, RemoteClient*>::iterator
i = m_clients.begin();
@ -3664,7 +3666,7 @@ void Server::SendAddParticleSpawnerAll(u16 amount, float spawntime, v3f minpos,
SendAddParticleSpawner(client->peer_id, amount, spawntime,
minpos, maxpos, minvel, maxvel, minacc, maxacc,
minexptime, maxexptime, minsize, maxsize, collisiondetection, texture, id);
minexptime, maxexptime, minsize, maxsize, collisiondetection, vertical, texture, id);
}
}
@ -5051,21 +5053,21 @@ void Server::notifyPlayers(const std::wstring msg)
void Server::spawnParticle(const char *playername, v3f pos,
v3f velocity, v3f acceleration,
float expirationtime, float size, bool
collisiondetection, std::string texture)
collisiondetection, bool vertical, std::string texture)
{
Player *player = m_env->getPlayer(playername);
if(!player)
return;
SendSpawnParticle(player->peer_id, pos, velocity, acceleration,
expirationtime, size, collisiondetection, texture);
expirationtime, size, collisiondetection, vertical, texture);
}
void Server::spawnParticleAll(v3f pos, v3f velocity, v3f acceleration,
float expirationtime, float size,
bool collisiondetection, std::string texture)
bool collisiondetection, bool vertical, std::string texture)
{
SendSpawnParticleAll(pos, velocity, acceleration,
expirationtime, size, collisiondetection, texture);
expirationtime, size, collisiondetection, vertical, texture);
}
u32 Server::addParticleSpawner(const char *playername,
@ -5075,7 +5077,7 @@ u32 Server::addParticleSpawner(const char *playername,
v3f minacc, v3f maxacc,
float minexptime, float maxexptime,
float minsize, float maxsize,
bool collisiondetection, std::string texture)
bool collisiondetection, bool vertical, std::string texture)
{
Player *player = m_env->getPlayer(playername);
if(!player)
@ -5097,7 +5099,7 @@ u32 Server::addParticleSpawner(const char *playername,
SendAddParticleSpawner(player->peer_id, amount, spawntime,
minpos, maxpos, minvel, maxvel, minacc, maxacc,
minexptime, maxexptime, minsize, maxsize,
collisiondetection, texture, id);
collisiondetection, vertical, texture, id);
return id;
}
@ -5108,7 +5110,7 @@ u32 Server::addParticleSpawnerAll(u16 amount, float spawntime,
v3f minacc, v3f maxacc,
float minexptime, float maxexptime,
float minsize, float maxsize,
bool collisiondetection, std::string texture)
bool collisiondetection, bool vertical, std::string texture)
{
u32 id = 0;
for(;;) // look for unused particlespawner id
@ -5126,7 +5128,7 @@ u32 Server::addParticleSpawnerAll(u16 amount, float spawntime,
SendAddParticleSpawnerAll(amount, spawntime,
minpos, maxpos, minvel, maxvel, minacc, maxacc,
minexptime, maxexptime, minsize, maxsize,
collisiondetection, texture, id);
collisiondetection, vertical, texture, id);
return id;
}

@ -389,11 +389,11 @@ public:
void spawnParticle(const char *playername,
v3f pos, v3f velocity, v3f acceleration,
float expirationtime, float size,
bool collisiondetection, std::string texture);
bool collisiondetection, bool vertical, std::string texture);
void spawnParticleAll(v3f pos, v3f velocity, v3f acceleration,
float expirationtime, float size,
bool collisiondetection, std::string texture);
bool collisiondetection, bool vertical, std::string texture);
u32 addParticleSpawner(const char *playername,
u16 amount, float spawntime,
@ -402,7 +402,7 @@ public:
v3f minacc, v3f maxacc,
float minexptime, float maxexptime,
float minsize, float maxsize,
bool collisiondetection, std::string texture);
bool collisiondetection, bool vertical, std::string texture);
u32 addParticleSpawnerAll(u16 amount, float spawntime,
v3f minpos, v3f maxpos,
@ -410,7 +410,7 @@ public:
v3f minacc, v3f maxacc,
float minexptime, float maxexptime,
float minsize, float maxsize,
bool collisiondetection, std::string texture);
bool collisiondetection, bool vertical, std::string texture);
void deleteParticleSpawner(const char *playername, u32 id);
void deleteParticleSpawnerAll(u32 id);
@ -556,7 +556,7 @@ private:
v3f minacc, v3f maxacc,
float minexptime, float maxexptime,
float minsize, float maxsize,
bool collisiondetection, std::string texture, u32 id);
bool collisiondetection, bool vertical, std::string texture, u32 id);
// Adds a ParticleSpawner on all peers
void SendAddParticleSpawnerAll(u16 amount, float spawntime,
@ -565,7 +565,7 @@ private:
v3f minacc, v3f maxacc,
float minexptime, float maxexptime,
float minsize, float maxsize,
bool collisiondetection, std::string texture, u32 id);
bool collisiondetection, bool vertical, std::string texture, u32 id);
// Deletes ParticleSpawner on a single client
void SendDeleteParticleSpawner(u16 peer_id, u32 id);
@ -577,12 +577,12 @@ private:
void SendSpawnParticle(u16 peer_id,
v3f pos, v3f velocity, v3f acceleration,
float expirationtime, float size,
bool collisiondetection, std::string texture);
bool collisiondetection, bool vertical, std::string texture);
// Spawns particle on all clients
void SendSpawnParticleAll(v3f pos, v3f velocity, v3f acceleration,
float expirationtime, float size,
bool collisiondetection, std::string texture);
bool collisiondetection, bool vertical, std::string texture);
/*
Something random