Explosions: Reduce repeated code

This commit is contained in:
Wuzzy 2020-04-30 21:08:42 +02:00
parent 772ea01aff
commit 679e2b1b70
1 changed files with 34 additions and 67 deletions

View File

@ -55,79 +55,46 @@ local function compute_sphere_rays(radius)
local rays = {} local rays = {}
local sphere = {} local sphere = {}
for y = -radius, radius do for i=1, 2 do
for z = -radius, radius do
for x = -radius, 0, 1 do
local d = x * x + y * y + z * z
if d <= radius * radius then
local pos = { x = x, y = y, z = z }
sphere[minetest.hash_node_position(pos)] = pos
break
end
end
end
end
for y = -radius, radius do
for z = -radius, radius do
for x = radius, 0, -1 do
local d = x * x + y * y + z * z
if d <= radius * radius then
local pos = { x = x, y = y, z = z }
sphere[minetest.hash_node_position(pos)] = pos
break
end
end
end
end
for x = -radius, radius do
for z = -radius, radius do
for y = -radius, 0, 1 do
local d = x * x + y * y + z * z
if d <= radius * radius then
local pos = { x = x, y = y, z = z }
sphere[minetest.hash_node_position(pos)] = pos
break
end
end
end
end
for x = -radius, radius do
for z = -radius, radius do
for y = radius, 0, -1 do
local d = x * x + y * y + z * z
if d <= radius * radius then
local pos = { x = x, y = y, z = z }
sphere[minetest.hash_node_position(pos)] = pos
break
end
end
end
end
for x = -radius, radius do
for y = -radius, radius do for y = -radius, radius do
for z = -radius, 0, 1 do for z = -radius, radius do
local d = x * x + y * y + z * z for x = -radius, 0, 1 do
if d <= radius * radius then local d = x * x + y * y + z * z
local pos = { x = x, y = y, z = z } if d <= radius * radius then
sphere[minetest.hash_node_position(pos)] = pos local pos = { x = x, y = y, z = z }
break sphere[minetest.hash_node_position(pos)] = pos
break
end
end end
end end
end end
end end
for x = -radius, radius do for i=1,2 do
for y = -radius, radius do for x = -radius, radius do
for z = radius, 0, -1 do for z = -radius, radius do
local d = x * x + y * y + z * z for y = -radius, 0, 1 do
if d <= radius * radius then local d = x * x + y * y + z * z
local pos = { x = x, y = y, z = z } if d <= radius * radius then
sphere[minetest.hash_node_position(pos)] = pos local pos = { x = x, y = y, z = z }
break sphere[minetest.hash_node_position(pos)] = pos
break
end
end
end
end
end
for i=1,2 do
for x = -radius, radius do
for y = -radius, radius do
for z = -radius, 0, 1 do
local d = x * x + y * y + z * z
if d <= radius * radius then
local pos = { x = x, y = y, z = z }
sphere[minetest.hash_node_position(pos)] = pos
break
end
end end
end end
end end