Никак не могу нормально отсечь углы на изометрической карте, типо так должно быть:
Проблема в том, что массив сам по себе 200*200*5 и сравнивать ооочень накладно.
Я просчитал минимальный ромб, который попадает в экран, но углы занимают сравнимую с ним площадь (рисую 200 тайлов в экран, и 200 за него - нагрузочно )
пытался сделать так:
--минимальные и максимальные значения индексов рисуемого массива (минимальный ромб)
fromI,_=screenToIso(0,0)
toI,_=screenToIso(SW,SH)
dx,fromJ=screenToIso(SW,0)
_,toJ=screenToIso(0,SH)
dx = math.abs(dx - fromI) --длина от вершины ромба до угла экрана (по x в изо)
lx = math.abs(toI-fromI) -- кол-во элементов в грани ромба
for i=fromI,toI do
local sY = dx-i
local eY = i -(lx - dx)
if(i>dx) then sY = i-dx end
if(i>lx-dx) then eY = (lx-dx)-i end
for j=fromJ+sY, toJ + eY do
--отрисовка
end
end
но почему-то рисуемая область не смещается при скролинге в право и вверх, а только в лево и вниз (screenToIso учитывает скролл карты)
как нормально математически отсечку сделать?