Слои для кнопок

Версия Minecraft
1.7.10
126
6
33
Такое дело: я сделал кнопки с доп. рендером, но появилась проблема, что другие такие же кнопки загораживают собой всё добро. Танцы с бубном и zLevel в тесселяторе результатов не дали. Есть способ выпихнуть кнопки за рендер или придётся делать невидимыми все неугодные кнопки?

Безымянный.png
 
Решение
Ну, по порядку надо рендерить
Я так понял что тебе нужен выпадающий список.
Есть вариант сделать по два прохода по кнопкам и вызывать какие нибудь render и postRender в которых отдельно будет рендерится сама кнопка и выпадающий список.
А ещё проще - это завести переменную focused (если у тебя только один список одновременно может быть открыт) и ту кнопку, которая focused рендерить последней (в начале тела цикла if (button == focused) continue;, а потом после цикла рендерить focused).
Можно исходники в студию?
Такое дело: я сделал кнопки с доп. рендером, но появилась проблема, что другие такие же кнопки загораживают собой всё добро. Танцы с бубном и zLevel в тесселяторе результатов не дали. Есть способ выпихнуть кнопки за рендер или придётся делать невидимыми все неугодные кнопки?

Посмотреть вложение 4562
 
Ну, по порядку надо рендерить
Я так понял что тебе нужен выпадающий список.
Есть вариант сделать по два прохода по кнопкам и вызывать какие нибудь render и postRender в которых отдельно будет рендерится сама кнопка и выпадающий список.
А ещё проще - это завести переменную focused (если у тебя только один список одновременно может быть открыт) и ту кнопку, которая focused рендерить последней (в начале тела цикла if (button == focused) continue;, а потом после цикла рендерить focused).
 
Всё таки решил колдовать с порядком рендера, т.к. у меня уже 95% из необходимого для этого было готово. А чтобы не делать отдельные кнопки для каждого элемента списка придумал такой вот костыль

Java:
public int getSubButtonId(int mouseX, int mouseY)
    {
        if (isActiv)
        {
            int i;
            for (i = 0;i < subButtonsList.length ; i++)
            {
              if (mouseX >= this.xPosition && mouseY >= this.yPosition + (this.height * (i + 1)) && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height + (this.height * (i + 1)))
                {
                    field_146123_n = true;
                    return i;
                }
            }
            field_146123_n = false;
        }

        return -1;
    }
Безымянный.png
 
Назад
Сверху