Как я могу объединить блоки одного типа в прямоугольные призмы в эффективном усадьбе? - PullRequest
0 голосов
/ 20 июня 2019

Я делаю игру по строительству городов на основе блоков и пытаюсь найти эффективный способ объединения нескольких блоков одного типа в блоки для оптимизации. Допустим, есть стена здания, и это кирпичные блоки размером 16x30x16. Вместо того, чтобы рисовать 7680 блоков, я могу нарисовать их в виде одной гигантской плоской прямоугольной призмы с повторяющейся текстурой, которая была бы еще эффективнее.

Я начал с создания полос, которые я собирался дополнительно объединить в панели, но кажется, что этот метод уже слишком медленный, так как он должен проходить через каждый блок на графике (чанке), проверить, может ли он быть объединенным с текущей полосой, а затем объединить ее, если да.

Заранее спасибо

local function Draw(plot)
    local blocks = plot.blocks
    local slabs = NewAutotable(3)
    local slabList = {}
    for y = 1, 32 do
        for x = 1, 16 do
            local currentSlab = NewSlab(x, y, 1, 1, 1, 1, blocks[x][y][1])
            slabs[x][y][1] = currentSlab
            slabList[#slabList + 1] = currentSlab
            for z = 2, 16 do
                if currentSlab[7] == blocks[x][y][z] then
                    GrowSlab(currentSlab, 0, 0, 1)
                else
                    currentSlab = NewSlab(x, y, z, 1, 1, 1, blocks[x][y][z + 1])
                    slabs[x][y][z] = currentSlab
                    slabList[#slabList + 1] = currentSlab
                end
            end
        end
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...