skip iterations if transparency not enabled
This commit is contained in:
parent
b7202d2ec2
commit
d806872d47
@ -40,7 +40,7 @@ function isogen.get_cube_position(center_x, center_y, cube_len, _, pos)
|
||||
return x, y
|
||||
end
|
||||
|
||||
function isogen.probe_position(min, max, pos, ipos, list, get_node)
|
||||
function isogen.probe_position(min, max, pos, ipos, list, get_node, skip_alpha)
|
||||
while vector.in_area(pos, min, max) do
|
||||
local node = get_node(pos)
|
||||
local color = isogen.get_color(node)
|
||||
@ -59,8 +59,8 @@ function isogen.probe_position(min, max, pos, ipos, list, get_node)
|
||||
node = node
|
||||
})
|
||||
|
||||
if not color.a or color.a == 255 then
|
||||
-- solid color
|
||||
if not color.a or color.a == 255 or skip_alpha then
|
||||
-- solid color or skip-param set
|
||||
break
|
||||
end
|
||||
end
|
||||
|
7
draw.lua
7
draw.lua
@ -33,25 +33,26 @@ function isogen.draw(pos1, pos2, opts)
|
||||
|
||||
local ipos = vector.new(1, -1, 1)
|
||||
local list = {}
|
||||
local skip_alpha = not opts.enable_transparency
|
||||
|
||||
-- top layer
|
||||
for x=min.x, max.x do
|
||||
for z=min.z, max.z do
|
||||
isogen.probe_position(min, max, vector.new(x, max.y, z), ipos, list, opts.get_node)
|
||||
isogen.probe_position(min, max, vector.new(x, max.y, z), ipos, list, opts.get_node, skip_alpha)
|
||||
end
|
||||
end
|
||||
|
||||
-- left layer (without top stride)
|
||||
for x=min.x, max.x do
|
||||
for y=min.y, max.y-1 do
|
||||
isogen.probe_position(min, max, vector.new(x, y, min.z), ipos, list, opts.get_node)
|
||||
isogen.probe_position(min, max, vector.new(x, y, min.z), ipos, list, opts.get_node, skip_alpha)
|
||||
end
|
||||
end
|
||||
|
||||
-- right layer (without top and left stride)
|
||||
for z=min.z+1, max.z do
|
||||
for y=min.y, max.y-1 do
|
||||
isogen.probe_position(min, max, vector.new(min.x, y, z), ipos, list, opts.get_node)
|
||||
isogen.probe_position(min, max, vector.new(min.x, y, z), ipos, list, opts.get_node, skip_alpha)
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user