forked from VoxeLibre/VoxeLibre
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.
This commit is contained in:
parent
f528b31d48
commit
f7052943ec
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue