Skip to content

Commit

Permalink
TNT: add some depth to the explosion effect
Browse files Browse the repository at this point in the history
We add a dirt-like particle (drawn from scratch, uses some
colors from default_dirt's palette) to spawn many particles
that have collision enabled around the center of the blast.

This has the effect of obscuring the center of the blast, as
that is a painfully visible empty area when the explosion happens,
as there's only a little spark.

The dirt particles bounce around the walls and floor a bit,
and disappear rapidly, well before the smoke particles disappear.

This is a nice visual distraction that obscures the sudden
appearance of the gaping hole, and makes it a whole lot more
believable.
  • Loading branch information
sofar authored and paramat committed Apr 16, 2016
1 parent 8cd049c commit 8556dd3
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions mods/tnt/init.lua
Expand Up @@ -162,6 +162,37 @@ local function add_effects(pos, radius)
maxsize = 16,
texture = "tnt_smoke.png",
})

-- we just dropped some items. Look at the items entities and pick
-- one of them to use as texture
local texture = "tnt_blast.png" --fallback texture
local objs = minetest.get_objects_inside_radius(pos, 2)
for _, obj in pairs(objs) do
if obj and obj:get_luaentity() then
local def = ItemStack(obj:get_luaentity().itemstring):get_definition()
if def.tiles then
texture = def.tiles[1]
break
end
end
end

minetest.add_particlespawner({
amount = 64,
time = 0.1,
minpos = vector.subtract(pos, radius / 2),
maxpos = vector.add(pos, radius / 2),
minvel = {x=-3, y=0, z=-3},
maxvel = {x=3, y=5, z=3},
minacc = {x=0, y=-10, z=0},
maxacc = {x=0, y=-10, z=0},
minexptime = 0.8,
maxexptime = 2.0,
minsize = 2,
maxsize = 6,
texture = texture,
collisiondetection = true,
})
end

local function burn(pos)
Expand Down
Binary file added mods/tnt/textures/tnt_blast.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 8556dd3

Please sign in to comment.