1
0
Fork 0

Fix rays not being cast in a specific direction

A bug was introduced in 679e2b1b which caused explosions to not cast
rays for environment destruction in the (+X, +Y, +Z) direction.  This
commit fixes that.
doc-refactoring
Elias Åström 2021-05-01 15:37:14 +02:00
parent f528b31d48
commit f7052943ec
1 changed files with 37 additions and 39 deletions

View File

@ -66,50 +66,48 @@ local function compute_sphere_rays(radius)
local rays = {} local rays = {}
local sphere = {} local sphere = {}
for i=1, 2 do local function add_ray(pos)
sphere[hash_node_position(pos)] = pos
end
for y = -radius, radius do for y = -radius, radius do
for z = -radius, radius do for z = -radius, radius do
for x = -radius, 0, 1 do for x = -radius, 0 do
local d = x * x + y * y + z * z local d = x * x + y * y + z * z
if d <= radius * radius then if d <= radius * radius then
local pos = { x = x, y = y, z = z } add_ray(vector.new(x, y, z))
sphere[hash_node_position(pos)] = pos add_ray(vector.new(-x, y, z))
break break
end end
end end
end end
end end
end
for i=1,2 do
for x = -radius, radius do for x = -radius, radius do
for z = -radius, radius do for z = -radius, radius do
for y = -radius, 0, 1 do for y = -radius, 0 do
local d = x * x + y * y + z * z local d = x * x + y * y + z * z
if d <= radius * radius then if d <= radius * radius then
local pos = { x = x, y = y, z = z } add_ray(vector.new(x, y, z))
sphere[hash_node_position(pos)] = pos add_ray(vector.new(x, -y, z))
break break
end end
end end
end end
end end
end
for i=1,2 do
for x = -radius, radius do for x = -radius, radius do
for y = -radius, radius do for y = -radius, radius do
for z = -radius, 0, 1 do for z = -radius, 0 do
local d = x * x + y * y + z * z local d = x * x + y * y + z * z
if d <= radius * radius then if d <= radius * radius then
local pos = { x = x, y = y, z = z } add_ray(vector.new(x, y, z))
sphere[hash_node_position(pos)] = pos add_ray(vector.new(x, y, -z))
break break
end end
end end
end end
end end
end
for _, pos in pairs(sphere) do for _, pos in pairs(sphere) do
rays[#rays + 1] = vector.normalize(pos) rays[#rays + 1] = vector.normalize(pos)