mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-02 16:38:41 +00:00
Cleanup of particle & particlespawner structures and code (#9893)
This commit is contained in:
parent
1bcdc2d7e9
commit
1357ea1da2
11 changed files with 497 additions and 675 deletions
|
@ -958,114 +958,56 @@ void Client::handleCommand_SpawnParticle(NetworkPacket* pkt)
|
|||
std::string datastring(pkt->getString(0), pkt->getSize());
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
|
||||
v3f pos = readV3F32(is);
|
||||
v3f vel = readV3F32(is);
|
||||
v3f acc = readV3F32(is);
|
||||
float expirationtime = readF32(is);
|
||||
float size = readF32(is);
|
||||
bool collisiondetection = readU8(is);
|
||||
std::string texture = deSerializeLongString(is);
|
||||
|
||||
bool vertical = false;
|
||||
bool collision_removal = false;
|
||||
TileAnimationParams animation;
|
||||
animation.type = TAT_NONE;
|
||||
u8 glow = 0;
|
||||
bool object_collision = false;
|
||||
try {
|
||||
vertical = readU8(is);
|
||||
collision_removal = readU8(is);
|
||||
animation.deSerialize(is, m_proto_ver);
|
||||
glow = readU8(is);
|
||||
object_collision = readU8(is);
|
||||
} catch (...) {}
|
||||
ParticleParameters p;
|
||||
p.deSerialize(is, m_proto_ver);
|
||||
|
||||
ClientEvent *event = new ClientEvent();
|
||||
event->type = CE_SPAWN_PARTICLE;
|
||||
event->spawn_particle.pos = new v3f (pos);
|
||||
event->spawn_particle.vel = new v3f (vel);
|
||||
event->spawn_particle.acc = new v3f (acc);
|
||||
event->spawn_particle.expirationtime = expirationtime;
|
||||
event->spawn_particle.size = size;
|
||||
event->spawn_particle.collisiondetection = collisiondetection;
|
||||
event->spawn_particle.collision_removal = collision_removal;
|
||||
event->spawn_particle.object_collision = object_collision;
|
||||
event->spawn_particle.vertical = vertical;
|
||||
event->spawn_particle.texture = new std::string(texture);
|
||||
event->spawn_particle.animation = animation;
|
||||
event->spawn_particle.glow = glow;
|
||||
event->type = CE_SPAWN_PARTICLE;
|
||||
event->spawn_particle = new ParticleParameters(p);
|
||||
|
||||
m_client_event_queue.push(event);
|
||||
}
|
||||
|
||||
void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt)
|
||||
{
|
||||
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 datastring(pkt->getString(0), pkt->getSize());
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
|
||||
ParticleSpawnerParameters p;
|
||||
u32 server_id;
|
||||
u16 attached_id = 0;
|
||||
|
||||
*pkt >> amount >> spawntime >> minpos >> maxpos >> minvel >> maxvel
|
||||
>> minacc >> maxacc >> minexptime >> maxexptime >> minsize
|
||||
>> maxsize >> collisiondetection;
|
||||
p.amount = readU16(is);
|
||||
p.time = readF32(is);
|
||||
p.minpos = readV3F32(is);
|
||||
p.maxpos = readV3F32(is);
|
||||
p.minvel = readV3F32(is);
|
||||
p.maxvel = readV3F32(is);
|
||||
p.minacc = readV3F32(is);
|
||||
p.maxacc = readV3F32(is);
|
||||
p.minexptime = readF32(is);
|
||||
p.maxexptime = readF32(is);
|
||||
p.minsize = readF32(is);
|
||||
p.maxsize = readF32(is);
|
||||
p.collisiondetection = readU8(is);
|
||||
p.texture = deSerializeLongString(is);
|
||||
|
||||
std::string texture = pkt->readLongString();
|
||||
server_id = readU32(is);
|
||||
|
||||
*pkt >> server_id;
|
||||
p.vertical = readU8(is);
|
||||
p.collision_removal = readU8(is);
|
||||
|
||||
bool vertical = false;
|
||||
bool collision_removal = false;
|
||||
u16 attached_id = 0;
|
||||
TileAnimationParams animation;
|
||||
animation.type = TAT_NONE;
|
||||
u8 glow = 0;
|
||||
bool object_collision = false;
|
||||
try {
|
||||
*pkt >> vertical;
|
||||
*pkt >> collision_removal;
|
||||
*pkt >> attached_id;
|
||||
attached_id = readU16(is);
|
||||
|
||||
// This is horrible but required (why are there two ways to deserialize pkts?)
|
||||
std::string datastring(pkt->getRemainingString(), pkt->getRemainingBytes());
|
||||
std::istringstream is(datastring, std::ios_base::binary);
|
||||
animation.deSerialize(is, m_proto_ver);
|
||||
glow = readU8(is);
|
||||
object_collision = readU8(is);
|
||||
} catch (...) {}
|
||||
p.animation.deSerialize(is, m_proto_ver);
|
||||
p.glow = readU8(is);
|
||||
p.object_collision = readU8(is);
|
||||
|
||||
auto event = new ClientEvent();
|
||||
event->type = CE_ADD_PARTICLESPAWNER;
|
||||
event->add_particlespawner.amount = amount;
|
||||
event->add_particlespawner.spawntime = spawntime;
|
||||
event->add_particlespawner.minpos = new v3f (minpos);
|
||||
event->add_particlespawner.maxpos = new v3f (maxpos);
|
||||
event->add_particlespawner.minvel = new v3f (minvel);
|
||||
event->add_particlespawner.maxvel = new v3f (maxvel);
|
||||
event->add_particlespawner.minacc = new v3f (minacc);
|
||||
event->add_particlespawner.maxacc = new v3f (maxacc);
|
||||
event->add_particlespawner.minexptime = minexptime;
|
||||
event->add_particlespawner.maxexptime = maxexptime;
|
||||
event->add_particlespawner.minsize = minsize;
|
||||
event->add_particlespawner.maxsize = maxsize;
|
||||
event->add_particlespawner.collisiondetection = collisiondetection;
|
||||
event->add_particlespawner.collision_removal = collision_removal;
|
||||
event->add_particlespawner.object_collision = object_collision;
|
||||
event->add_particlespawner.attached_id = attached_id;
|
||||
event->add_particlespawner.vertical = vertical;
|
||||
event->add_particlespawner.texture = new std::string(texture);
|
||||
event->add_particlespawner.id = server_id;
|
||||
event->add_particlespawner.animation = animation;
|
||||
event->add_particlespawner.glow = glow;
|
||||
event->type = CE_ADD_PARTICLESPAWNER;
|
||||
event->add_particlespawner.p = new ParticleSpawnerParameters(p);
|
||||
event->add_particlespawner.attached_id = attached_id;
|
||||
event->add_particlespawner.id = server_id;
|
||||
|
||||
m_client_event_queue.push(event);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue