mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-11 17:51:04 +00:00
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:
parent
a4c5f10ecf
commit
2b1eff7725
10 changed files with 266 additions and 93 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue