]> git.lizzy.rs Git - minetest.git/commit
Particles: Add option to remove particles on collision
authorAuke Kok <sofar+github@foo-projects.org>
Sat, 28 May 2016 04:08:23 +0000 (21:08 -0700)
committerkwolekr <kwolekr@minetest.net>
Sat, 28 May 2016 04:08:23 +0000 (00:08 -0400)
commitd499ec483837fa7210176ef39beba2d5a3a5a61d
tree8476d09d0c351481a7b14fc32e51b95a4e07dd3e
parent62d15ac7c1fcd7214a9e45d46bbc560f998edb95
Particles: Add option to remove particles on collision

Adds the particle option `collision_removal = bool`

Some particles are hard to use right now since they either go through
solid blocks (without collision detection), and with collision
detection enabled they (e.g. raindrops) would just stop dead on the
floor and sit there until they expire, or worse, scrape along a wall
or ceiling.

We can solve the problem by adding a boolean flag that tells the
particle to be removed if it ever collides with something. This will
make it easier to add rain that doesn't fall through your roof or stick
on the top of it. Or clouds and smoke that don't go through trees.

Particles that collide with this flag are marked expired
unconditionally, causing them to be treated like normal expired
particles and cleaned up normally.

Documentation is adjusted accordingly.

An added bonus of this patch is that particles can potentially collide
many times with nodes, and this reduces the amount of collisions to 1
(max), which may end up reducing particle load on the client.
doc/lua_api.txt
src/client.h
src/network/clientpackethandler.cpp
src/network/networkprotocol.h
src/particles.cpp
src/particles.h
src/script/lua_api/l_particles.cpp
src/server.cpp
src/server.h