If you replace
for m = height,-1,-1 do
for n = 1,#row do
o = row[n].Y
if o == m then
print(o)
facedir[o] = row[n]
end
end
end
with
for m = height,-1,-1 do
for n = 1,#row do
o = row[n].Y
if o == m then
if not facedir[o] then
facedir[o] = {}
end
local t = facedir[o]
t[#t + 1] = row[n]
end
end
end
then you get values more like what you want I believe. Though you can avoid the second loop entirely if you create independent row
tables and not one giant row
table like below.
local tbmoffsets = {}
local facedir = {}
local height = 10
local widthl = -5
local widthr = 5
local depth = 3
local Z1=1
for Y1 = height, -1,-1 do
local row = {}
for X1 = widthl,widthr do
row[#row + 1] = {X = X1, Y = Y1, Z = Z1}
end
facedir[Y1]=row
end
tbmoffsets[1] = facedir