diff options
author | Paramat <paramat@users.noreply.github.com> | 2018-09-08 00:38:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-08 00:38:35 +0100 |
commit | 766fb7b46edab47f96b8b940e390daf5319261b7 (patch) | |
tree | 59a3bb890cbf8922bd82e4e2fffdda42717c71ea /src/network/clientpackethandler.cpp | |
parent | 6ed9c6fb3a80bf18b3f9f74e39704558371e8b41 (diff) | |
download | minetest-766fb7b46edab47f96b8b940e390daf5319261b7.tar.gz minetest-766fb7b46edab47f96b8b940e390daf5319261b7.tar.bz2 minetest-766fb7b46edab47f96b8b940e390daf5319261b7.zip |
Particles: Make collision with objects optional (#7682)
Also set it to false for node dig particles, as they are often created
and high in number.
Improve particle documentation.
Diffstat (limited to 'src/network/clientpackethandler.cpp')
-rw-r--r-- | src/network/clientpackethandler.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/network/clientpackethandler.cpp b/src/network/clientpackethandler.cpp index f8be61317..cbd0d6a57 100644 --- a/src/network/clientpackethandler.cpp +++ b/src/network/clientpackethandler.cpp @@ -889,16 +889,19 @@ void Client::handleCommand_SpawnParticle(NetworkPacket* pkt) float size = readF1000(is); bool collisiondetection = readU8(is); std::string texture = deSerializeLongString(is); - bool vertical = false; - bool collision_removal = false; + + bool vertical = false; + bool collision_removal = false; TileAnimationParams animation; - animation.type = TAT_NONE; - u8 glow = 0; + 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 (...) {} ClientEvent *event = new ClientEvent(); @@ -910,6 +913,7 @@ void Client::handleCommand_SpawnParticle(NetworkPacket* pkt) 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; @@ -943,12 +947,13 @@ void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt) *pkt >> server_id; - bool vertical = false; + bool vertical = false; bool collision_removal = false; + u16 attached_id = 0; TileAnimationParams animation; - animation.type = TAT_NONE; - u8 glow = 0; - u16 attached_id = 0; + animation.type = TAT_NONE; + u8 glow = 0; + bool object_collision = false; try { *pkt >> vertical; *pkt >> collision_removal; @@ -959,6 +964,7 @@ void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt) std::istringstream is(datastring, std::ios_base::binary); animation.deSerialize(is, m_proto_ver); glow = readU8(is); + object_collision = readU8(is); } catch (...) {} u32 client_id = m_particle_manager.getSpawnerId(); @@ -980,6 +986,7 @@ void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt) 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); |