Визуальная часть MotionGraph 3.1

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
моя первая тема (модеры одобрите пж)
motiongraph:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.events.EventUpdate;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.StyleManager;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import org.lwjgl.opengl.GL11;

import java.util.ArrayList;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class MotionGraphRenderer implements ElementRenderer {
    final Dragging dragging;
    final Minecraft mc = Minecraft.getInstance();
    final ArrayList<Double> height = new ArrayList<>();
    double bps;
    double displayBps;

    public void tick() {
        this.height.add(this.bps);
        if (this.height.size() > 80) {
            this.height.remove(0);
        }

        if (displayBps == 0) displayBps = bps;
        displayBps += (bps - displayBps) * 0.15;
    }

    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();
        float posX = this.dragging.getX();
        float posY = this.dragging.getY();

        this.bps = Math.hypot(mc.player.prevPosX - mc.player.getPosX(), mc.player.prevPosZ - mc.player.getPosZ()) * 20.0D;

        renderMotionGraph(ms, posX, posY);
        Scissor.unset();
    }

    private void renderMotionGraph(MatrixStack ms, float posX, float posY) {
        int width = 100;
        int height = 40;


        int bgTop = ColorUtils.rgba(30, 30, 40, 180);
        int bgBottom = ColorUtils.rgba(15, 15, 25, 180);

        DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(0, 0, 0, 80));

        DisplayUtils.drawGradientRound(posX, posY, width, height, 4, bgTop, bgTop, bgBottom, bgBottom);

        DisplayUtils.drawRoundedOutline(posX, posY, width, height, 4, 1f, ColorUtils.rgba(255, 255, 255, 30));

        if (this.height.size() < 2) return;

        double maxBps = Math.max(0.5, this.height.stream().mapToDouble(Double::doubleValue).max().orElse(1.0));
        double minBps = this.height.stream().mapToDouble(Double::doubleValue).min().orElse(0.0);
        double range = maxBps - minBps;
        if (range < 0.1) range = 0.1;

        drawGrid(posX, posY, width, height);

        drawGraphFill(posX, posY, width, height, minBps, range);

        GL11.glPushMatrix();
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glEnable(GL11.GL_LINE_SMOOTH);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glLineWidth(2.0F);

        GL11.glBegin(GL11.GL_LINE_STRIP);

        int lineColor = ColorUtils.rgb(255, 255, 255);
        float red = ((lineColor >> 16) & 0xFF) / 255.0f;
        float green = ((lineColor >> 8) & 0xFF) / 255.0f;
        float blue = (lineColor & 0xFF) / 255.0f;
        GL11.glColor4f(red, green, blue, 0.9f);

        for (int i = 0; i < this.height.size(); i++) {
            double x = posX + 4 + (i * (width - 8.0) / (this.height.size() - 1));
            double value = this.height.get(i);
            double normalized = (value - minBps) / range;
            double y = posY + height - 4 - (normalized * (height - 8));
            GL11.glVertex2d(x, y);
        }

        GL11.glEnd();
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glDisable(GL11.GL_LINE_SMOOTH);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glPopMatrix();

        drawText(ms, posX, posY, width, height);

        dragging.setWidth(width);
        dragging.setHeight(height);
    }

    private void drawGrid(float posX, float posY, int width, int height) {
        GL11.glPushMatrix();
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glLineWidth(0.5F);

        GL11.glBegin(GL11.GL_LINES);
        GL11.glColor4f(1.0f, 1.0f, 1.0f, 0.05f);

        for (int i = 1; i < 4; i++) {
            float x = posX + (width * i / 4.0f);
            GL11.glVertex2f(x, posY + 3);
            GL11.glVertex2f(x, posY + height - 3);
        }

        for (int i = 1; i < 3; i++) {
            float y = posY + (height * i / 3.0f);
            GL11.glVertex2f(posX + 3, y);
            GL11.glVertex2f(posX + width - 3, y);
        }

        GL11.glEnd();
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glPopMatrix();
    }

    private void drawGraphFill(float posX, float posY, int width, int height, double minBps, double range) {
        GL11.glPushMatrix();
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

        int fillColor = ColorUtils.rgb(255, 255, 255);
        float red = ((fillColor >> 16) & 0xFF) / 255.0f;
        float green = ((fillColor >> 8) & 0xFF) / 255.0f;
        float blue = (fillColor & 0xFF) / 255.0f;

        GL11.glBegin(GL11.GL_TRIANGLE_STRIP);

        for (int i = 0; i < this.height.size(); i++) {
            double x = posX + 4 + (i * (width - 8.0) / (this.height.size() - 1));
            double value = this.height.get(i);
            double normalized = (value - minBps) / range;
            double y = posY + height - 4 - (normalized * (height - 8));

            GL11.glColor4f(red, green, blue, 0.0f);
            GL11.glVertex2d(x, posY + height - 4);

            GL11.glColor4f(red, green, blue, 0.05f);
            GL11.glVertex2d(x, y);
        }

        GL11.glEnd();
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glPopMatrix();
    }

    private void drawText(MatrixStack ms, float posX, float posY, int width, int height) {
        String bpsText = String.format("%.1f", displayBps);
        String unitText = "BPS";

        float fontSize = 7.0f;
        float unitFontSize = 5.5f;

        float textX = posX + width - 30;
        float textY = posY + 6;
        float unitX = posX + width - 12;
        float unitY = posY + 8;

        int textColor = ColorUtils.rgb(255, 255, 255);
        int unitColor = ColorUtils.rgb(200, 200, 200);

        Fonts.sfMedium.drawText(ms, bpsText, textX, textY, textColor, fontSize);
        Fonts.sfMedium.drawText(ms, unitText, unitX, unitY, unitColor, unitFontSize);

        if (this.height.size() > 10) {
            double avgSpeed = this.height.stream()
                    .skip(Math.max(0, this.height.size() - 20))
                    .mapToDouble(Double::doubleValue)
                    .average().orElse(0.0);

            String avgText = String.format("Avg: %.1f", avgSpeed);
            float avgX = posX + 4;
            float avgY = posY + height - 8;
            int avgColor = ColorUtils.rgb(160, 160, 160);

            Fonts.sfMedium.drawText(ms, avgText, avgX, avgY, avgColor, 5.0f);
        }
    }

    public void update(EventUpdate e) {
        tick();
    }
}

ss-Посмотреть вложение 307312

и снова мой годовалый мошен граф насилуют
 
/up зачем сливать меня кормить?
 

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.





Скрытое содержимое
1752939893455.png
 

Вложения

  • 1752939882372.png
    1752939882372.png
    2 KB · Просмотры: 20
моя первая тема (модеры одобрите пж)
motiongraph:
Expand Collapse Copy
package im.expensive.ui.display.impl;

import com.mojang.blaze3d.matrix.MatrixStack;
import im.expensive.Expensive;
import im.expensive.events.EventDisplay;
import im.expensive.events.EventUpdate;
import im.expensive.ui.display.ElementRenderer;
import im.expensive.ui.styles.StyleManager;
import im.expensive.utils.drag.Dragging;
import im.expensive.utils.render.ColorUtils;
import im.expensive.utils.render.DisplayUtils;
import im.expensive.utils.render.Scissor;
import im.expensive.utils.render.font.Fonts;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import org.lwjgl.opengl.GL11;

import java.util.ArrayList;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class MotionGraphRenderer implements ElementRenderer {
    final Dragging dragging;
    final Minecraft mc = Minecraft.getInstance();
    final ArrayList<Double> height = new ArrayList<>();
    double bps;
    double displayBps;

    public void tick() {
        this.height.add(this.bps);
        if (this.height.size() > 80) {
            this.height.remove(0);
        }

        if (displayBps == 0) displayBps = bps;
        displayBps += (bps - displayBps) * 0.15;
    }

    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();
        float posX = this.dragging.getX();
        float posY = this.dragging.getY();

        this.bps = Math.hypot(mc.player.prevPosX - mc.player.getPosX(), mc.player.prevPosZ - mc.player.getPosZ()) * 20.0D;

        renderMotionGraph(ms, posX, posY);
        Scissor.unset();
    }

    private void renderMotionGraph(MatrixStack ms, float posX, float posY) {
        int width = 100;
        int height = 40;


        int bgTop = ColorUtils.rgba(30, 30, 40, 180);
        int bgBottom = ColorUtils.rgba(15, 15, 25, 180);

        DisplayUtils.drawShadow(posX, posY, width, height, 10, ColorUtils.rgba(0, 0, 0, 80));

        DisplayUtils.drawGradientRound(posX, posY, width, height, 4, bgTop, bgTop, bgBottom, bgBottom);

        DisplayUtils.drawRoundedOutline(posX, posY, width, height, 4, 1f, ColorUtils.rgba(255, 255, 255, 30));

        if (this.height.size() < 2) return;

        double maxBps = Math.max(0.5, this.height.stream().mapToDouble(Double::doubleValue).max().orElse(1.0));
        double minBps = this.height.stream().mapToDouble(Double::doubleValue).min().orElse(0.0);
        double range = maxBps - minBps;
        if (range < 0.1) range = 0.1;

        drawGrid(posX, posY, width, height);

        drawGraphFill(posX, posY, width, height, minBps, range);

        GL11.glPushMatrix();
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glEnable(GL11.GL_LINE_SMOOTH);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glLineWidth(2.0F);

        GL11.glBegin(GL11.GL_LINE_STRIP);

        int lineColor = ColorUtils.rgb(255, 255, 255);
        float red = ((lineColor >> 16) & 0xFF) / 255.0f;
        float green = ((lineColor >> 8) & 0xFF) / 255.0f;
        float blue = (lineColor & 0xFF) / 255.0f;
        GL11.glColor4f(red, green, blue, 0.9f);

        for (int i = 0; i < this.height.size(); i++) {
            double x = posX + 4 + (i * (width - 8.0) / (this.height.size() - 1));
            double value = this.height.get(i);
            double normalized = (value - minBps) / range;
            double y = posY + height - 4 - (normalized * (height - 8));
            GL11.glVertex2d(x, y);
        }

        GL11.glEnd();
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glDisable(GL11.GL_LINE_SMOOTH);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glPopMatrix();

        drawText(ms, posX, posY, width, height);

        dragging.setWidth(width);
        dragging.setHeight(height);
    }

    private void drawGrid(float posX, float posY, int width, int height) {
        GL11.glPushMatrix();
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glLineWidth(0.5F);

        GL11.glBegin(GL11.GL_LINES);
        GL11.glColor4f(1.0f, 1.0f, 1.0f, 0.05f);

        for (int i = 1; i < 4; i++) {
            float x = posX + (width * i / 4.0f);
            GL11.glVertex2f(x, posY + 3);
            GL11.glVertex2f(x, posY + height - 3);
        }

        for (int i = 1; i < 3; i++) {
            float y = posY + (height * i / 3.0f);
            GL11.glVertex2f(posX + 3, y);
            GL11.glVertex2f(posX + width - 3, y);
        }

        GL11.glEnd();
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glPopMatrix();
    }

    private void drawGraphFill(float posX, float posY, int width, int height, double minBps, double range) {
        GL11.glPushMatrix();
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

        int fillColor = ColorUtils.rgb(255, 255, 255);
        float red = ((fillColor >> 16) & 0xFF) / 255.0f;
        float green = ((fillColor >> 8) & 0xFF) / 255.0f;
        float blue = (fillColor & 0xFF) / 255.0f;

        GL11.glBegin(GL11.GL_TRIANGLE_STRIP);

        for (int i = 0; i < this.height.size(); i++) {
            double x = posX + 4 + (i * (width - 8.0) / (this.height.size() - 1));
            double value = this.height.get(i);
            double normalized = (value - minBps) / range;
            double y = posY + height - 4 - (normalized * (height - 8));

            GL11.glColor4f(red, green, blue, 0.0f);
            GL11.glVertex2d(x, posY + height - 4);

            GL11.glColor4f(red, green, blue, 0.05f);
            GL11.glVertex2d(x, y);
        }

        GL11.glEnd();
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glPopMatrix();
    }

    private void drawText(MatrixStack ms, float posX, float posY, int width, int height) {
        String bpsText = String.format("%.1f", displayBps);
        String unitText = "BPS";

        float fontSize = 7.0f;
        float unitFontSize = 5.5f;

        float textX = posX + width - 30;
        float textY = posY + 6;
        float unitX = posX + width - 12;
        float unitY = posY + 8;

        int textColor = ColorUtils.rgb(255, 255, 255);
        int unitColor = ColorUtils.rgb(200, 200, 200);

        Fonts.sfMedium.drawText(ms, bpsText, textX, textY, textColor, fontSize);
        Fonts.sfMedium.drawText(ms, unitText, unitX, unitY, unitColor, unitFontSize);

        if (this.height.size() > 10) {
            double avgSpeed = this.height.stream()
                    .skip(Math.max(0, this.height.size() - 20))
                    .mapToDouble(Double::doubleValue)
                    .average().orElse(0.0);

            String avgText = String.format("Avg: %.1f", avgSpeed);
            float avgX = posX + 4;
            float avgY = posY + height - 8;
            int avgColor = ColorUtils.rgb(160, 160, 160);

            Fonts.sfMedium.drawText(ms, avgText, avgX, avgY, avgColor, 5.0f);
        }
    }

    public void update(EventUpdate e) {
        tick();
    }
}

ss-Посмотреть вложение 307312
1753399776493.png


что делать в чате ошибка опенгл 1282
 
дайте drawGradientRound
 
Тут что-то было
 
Последнее редактирование:
Назад
Сверху Снизу