- 1,526
- 138
- 281
Добрый день, форумчане! При разработке мода столкнулся с небольшой, и тем не менее, значимой проблемой.
Это "задержка" отрисовки VerrtexConsumer'а. Рисую я в гуи.
Демонстрация проблемы:
Какие пути решения проблемы возможны?
Это "задержка" отрисовки VerrtexConsumer'а. Рисую я в гуи.
Гуишка:
@OnlyIn(Dist.CLIENT)
public class SpellcastScreen extends Screen {
private final List<Integer> points = new ArrayList<>();
public SpellcastScreen() {
super(Component.empty());
}
@Override
public boolean isPauseScreen() {
return false;
}
@Override
public boolean keyReleased(int key, int p_94716_, int p_94717_) {
if(Keybinds.INSTANCE.mana_control_in.getKey().getValue() == key) {
onClose();
return true;
}
return super.keyReleased(key, p_94716_, p_94717_);
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int dragging) {
points.add((int) mouseX); // Точка соединения устанавливается мышью
points.add((int) mouseY);
return super.mouseClicked(mouseX, mouseY, dragging);
}
@Override
public void render(GuiGraphics gui, int mouseX, int mouseY, float p_282465_) {
renderLines(gui, 0xaaffffff);
super.render(gui, mouseX, mouseY, p_282465_);
}
@Override
public void onClose() {
PacketHandler.sendToServer(new SpellcastHudOpenPacket(points));
points.clear();
super.onClose();
}
public void renderLines(GuiGraphics gui, int color) {
Matrix4f matrix4f = gui.pose().last().pose();
float f3 = (float)FastColor.ARGB32.alpha(color) / 255.0F;
float f = (float)FastColor.ARGB32.red(color) / 255.0F;
float f1 = (float)FastColor.ARGB32.green(color) / 255.0F;
float f2 = (float)FastColor.ARGB32.blue(color) / 255.0F;
VertexConsumer vertexconsumer = gui.bufferSource().getBuffer(RenderType.LINES);
for(int i = 2; i < points.size() / 2; i += 2) {
int x0 = points.get(i - 2);
int y0 = points.get(i - 1);
int x = points.get(i);
int y = points.get(i + 1);
vertexconsumer.vertex(matrix4f, x0, y0 , 0).color(f, f1, f2, f3)
.normal(gui.pose().last().normal(), x, y, 0).endVertex();
}
}
}
Демонстрация проблемы:
Какие пути решения проблемы возможны?