1
0
mirror of https://github.com/minetest/minetest.git synced 2025-07-01 15:40:23 +02:00

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.
This commit is contained in:
Paramat
2018-09-08 00:38:35 +01:00
committed by GitHub
parent 6ed9c6fb3a
commit 766fb7b46e
9 changed files with 120 additions and 59 deletions

View File

@ -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);

View File

@ -477,10 +477,13 @@ enum ToClientCommand
f1000 expirationtime
f1000 size
u8 bool collisiondetection
u8 bool vertical
u32 len
u8[len] texture
u8 bool vertical
u8 collision_removal
TileAnimation animation
u8 glow
u8 object_collision
*/
TOCLIENT_ADD_PARTICLESPAWNER = 0x47,
@ -498,11 +501,14 @@ enum ToClientCommand
f1000 minsize
f1000 maxsize
u8 bool collisiondetection
u8 bool vertical
u32 len
u8[len] texture
u32 id
u8 bool vertical
u8 collision_removal
u32 id
TileAnimation animation
u8 glow
u8 object_collision
*/
TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY = 0x48, // Obsolete