From 7ead63957ccef33b97c77e68224ee12417c58516 Mon Sep 17 00:00:00 2001 From: minco Date: Mon, 18 Aug 2025 22:39:05 +0900 Subject: [PATCH] renderer soemthing --- .../java/org/walruslab/kepler/Kepler.java | 1 + .../walruslab/kepler/client/KeplerClient.java | 6 +- .../rhythm/hud/model/RhythmHudNote.java | 12 ++++ .../rhythm/hud/render/GuiScreenQuad.java | 44 +++++++++++++ .../rhythm/hud/render/RhythmHudRenderer.java | 61 +++++++++++++++++++ .../ParallelTrajectoryManager.java | 4 +- .../TrajectoryRenderer.java | 3 +- 7 files changed, 124 insertions(+), 7 deletions(-) create mode 100644 src/main/java/org/walruslab/kepler/rhythm/hud/model/RhythmHudNote.java create mode 100644 src/main/java/org/walruslab/kepler/rhythm/hud/render/GuiScreenQuad.java create mode 100644 src/main/java/org/walruslab/kepler/rhythm/hud/render/RhythmHudRenderer.java rename src/main/java/org/walruslab/kepler/{render => trajectory}/ParallelTrajectoryManager.java (91%) rename src/main/java/org/walruslab/kepler/{render => trajectory}/TrajectoryRenderer.java (98%) diff --git a/src/main/java/org/walruslab/kepler/Kepler.java b/src/main/java/org/walruslab/kepler/Kepler.java index d63cd17..ed02555 100644 --- a/src/main/java/org/walruslab/kepler/Kepler.java +++ b/src/main/java/org/walruslab/kepler/Kepler.java @@ -3,6 +3,7 @@ package org.walruslab.kepler; import net.fabricmc.api.ModInitializer; public class Kepler implements ModInitializer { + public static final String MOD_ID = "kepler"; @Override public void onInitialize() { diff --git a/src/main/java/org/walruslab/kepler/client/KeplerClient.java b/src/main/java/org/walruslab/kepler/client/KeplerClient.java index a2764b4..470b14f 100644 --- a/src/main/java/org/walruslab/kepler/client/KeplerClient.java +++ b/src/main/java/org/walruslab/kepler/client/KeplerClient.java @@ -2,15 +2,17 @@ package org.walruslab.kepler.client; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents; -import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.minecraft.entity.player.PlayerEntity; -import org.walruslab.kepler.render.TrajectoryRenderer; +import org.walruslab.kepler.rhythm.hud.render.RhythmHudRenderer; +import org.walruslab.kepler.trajectory.TrajectoryRenderer; public class KeplerClient implements ClientModInitializer { @Override public void onInitializeClient() { var renderer = new TrajectoryRenderer(); +// var hudRenderer = new RhythmHudRenderer(); +// hudRenderer.setupRenderer(); ClientEntityEvents.ENTITY_LOAD.register((entity, _a) -> { if (entity instanceof PlayerEntity) renderer.setupRenderLine((PlayerEntity) entity); }); diff --git a/src/main/java/org/walruslab/kepler/rhythm/hud/model/RhythmHudNote.java b/src/main/java/org/walruslab/kepler/rhythm/hud/model/RhythmHudNote.java new file mode 100644 index 0000000..d08d193 --- /dev/null +++ b/src/main/java/org/walruslab/kepler/rhythm/hud/model/RhythmHudNote.java @@ -0,0 +1,12 @@ +package org.walruslab.kepler.rhythm.hud.model; + +import org.joml.Vector3f; + +public record RhythmHudNote( + Vector3f color, + float angle, + float distance, + float noteStart, + float noteEnd +) { +} diff --git a/src/main/java/org/walruslab/kepler/rhythm/hud/render/GuiScreenQuad.java b/src/main/java/org/walruslab/kepler/rhythm/hud/render/GuiScreenQuad.java new file mode 100644 index 0000000..fcf3484 --- /dev/null +++ b/src/main/java/org/walruslab/kepler/rhythm/hud/render/GuiScreenQuad.java @@ -0,0 +1,44 @@ +package org.walruslab.kepler.rhythm.hud.render; + +import com.mojang.blaze3d.pipeline.RenderPipeline; +import net.minecraft.client.gl.RenderPipelines; +import net.minecraft.client.gui.ScreenRect; +import net.minecraft.client.gui.render.state.SimpleGuiElementRenderState; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.texture.TextureSetup; +import net.minecraft.client.util.math.MatrixStack; +import org.jetbrains.annotations.Nullable; +import org.joml.Matrix3x2fStack; +import org.joml.Vector2f; +import org.joml.Vector4f; + +public record GuiScreenQuad(ScreenRect scissorArea, Matrix3x2fStack pose, Vector2f v1, Vector2f v2, Vector2f v3, Vector2f v4, Vector4f color) implements SimpleGuiElementRenderState { + @Override + public void setupVertices(VertexConsumer vertices, float depth) { + vertices.vertex(pose, v1.x, v1.y, depth).color(color.x, color.y, color.z, color.w); + vertices.vertex(pose, v2.x, v2.y, depth).color(color.x, color.y, color.z, color.w); + vertices.vertex(pose, v3.x, v3.y, depth).color(color.x, color.y, color.z, color.w); + vertices.vertex(pose, v4.x, v4.y, depth).color(color.x, color.y, color.z, color.w); + } + + @Override + public RenderPipeline pipeline() { + return RenderPipelines.GUI; + } + + @Override + public TextureSetup textureSetup() { + return TextureSetup.empty(); + } + + @Override + public @Nullable ScreenRect bounds() { + var minX = (int) Math.min(Math.min(v1.x, v2.x), Math.min(v3.x, v4.x)); + var maxX = (int) Math.max(Math.max(v1.x, v2.x), Math.max(v3.x, v4.x)); + + var minY = (int) Math.min(Math.min(v1.y, v2.y), Math.min(v3.y, v4.y)); + var maxY = (int) Math.max(Math.max(v1.y, v2.y), Math.max(v3.y, v4.y)); + + return new ScreenRect(minX, minY, maxX - minX, maxY - minY); + } +} diff --git a/src/main/java/org/walruslab/kepler/rhythm/hud/render/RhythmHudRenderer.java b/src/main/java/org/walruslab/kepler/rhythm/hud/render/RhythmHudRenderer.java new file mode 100644 index 0000000..3a82b68 --- /dev/null +++ b/src/main/java/org/walruslab/kepler/rhythm/hud/render/RhythmHudRenderer.java @@ -0,0 +1,61 @@ +package org.walruslab.kepler.rhythm.hud.render; + +import com.mojang.blaze3d.pipeline.RenderPipeline; +import net.fabricmc.fabric.api.client.rendering.v1.hud.HudElementRegistry; +import net.minecraft.client.gl.RenderPipelines; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.ScreenRect; +import net.minecraft.client.gui.render.state.SimpleGuiElementRenderState; +import net.minecraft.client.render.*; +import net.minecraft.client.texture.TextureSetup; +import net.minecraft.util.Identifier; +import org.jetbrains.annotations.Nullable; +import org.walruslab.kepler.Kepler; +import org.walruslab.kepler.rhythm.hud.model.RhythmHudNote; + +import java.util.List; + +public class RhythmHudRenderer { + public void setupRenderer() { + HudElementRegistry.addLast(Identifier.of(Kepler.MOD_ID, "minco_hud"), this::handleRenderCallback); + } + + private void handleRenderCallback(DrawContext drawContext, RenderTickCounter tickCounter) { + System.out.println("asdf"); + var mats = drawContext.getMatrices(); + + drawContext.state.addSimpleElement(new SimpleGuiElementRenderState() { + @Override + public @Nullable ScreenRect bounds() { + return new ScreenRect(10, 10, 50, 60); + } + + @Override + public void setupVertices(VertexConsumer vertices, float depth) { + vertices.vertex(mats, 20.0f, 10.0f, depth).color(1.0f, 1.0f, 1.0f, 0.5f); + vertices.vertex(mats, 10.0f, 20.0f, depth).color(1.0f, 1.0f, 1.0f, 0.5f); + vertices.vertex(mats, 20.0f, 30.0f, depth).color(1.0f, 1.0f, 1.0f, 0.5f); + vertices.vertex(mats, 30.0f, 20.0f, depth).color(1.0f, 1.0f, 1.0f, 0.5f); + } + + @Override + public RenderPipeline pipeline() { + return RenderPipelines.GUI; + } + + @Override + public TextureSetup textureSetup() { + return TextureSetup.empty(); + } + + @Override + public @Nullable ScreenRect scissorArea() { + return drawContext.scissorStack.peekLast(); + } + }); + } + + public void renderHud(List state) { + + } +} diff --git a/src/main/java/org/walruslab/kepler/render/ParallelTrajectoryManager.java b/src/main/java/org/walruslab/kepler/trajectory/ParallelTrajectoryManager.java similarity index 91% rename from src/main/java/org/walruslab/kepler/render/ParallelTrajectoryManager.java rename to src/main/java/org/walruslab/kepler/trajectory/ParallelTrajectoryManager.java index 9867a34..f4e39fc 100644 --- a/src/main/java/org/walruslab/kepler/render/ParallelTrajectoryManager.java +++ b/src/main/java/org/walruslab/kepler/trajectory/ParallelTrajectoryManager.java @@ -1,9 +1,7 @@ -package org.walruslab.kepler.render; +package org.walruslab.kepler.trajectory; import net.minecraft.entity.projectile.ArrowEntity; import org.jetbrains.annotations.Nullable; -import org.walruslab.kepler.trajectory.Trajectory; -import org.walruslab.kepler.trajectory.TrajectoryHit; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/walruslab/kepler/render/TrajectoryRenderer.java b/src/main/java/org/walruslab/kepler/trajectory/TrajectoryRenderer.java similarity index 98% rename from src/main/java/org/walruslab/kepler/render/TrajectoryRenderer.java rename to src/main/java/org/walruslab/kepler/trajectory/TrajectoryRenderer.java index 6fdde33..54ac92e 100644 --- a/src/main/java/org/walruslab/kepler/render/TrajectoryRenderer.java +++ b/src/main/java/org/walruslab/kepler/trajectory/TrajectoryRenderer.java @@ -1,4 +1,4 @@ -package org.walruslab.kepler.render; +package org.walruslab.kepler.trajectory; import com.mojang.blaze3d.opengl.GlStateManager; import com.mojang.blaze3d.vertex.VertexFormat; @@ -21,7 +21,6 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3i; import org.joml.Vector3f; import org.lwjgl.opengl.GL11; -import org.walruslab.kepler.trajectory.TrajectoryHit; import org.walruslab.kepler.trajectory.item.ShootableItemFactory; import java.util.List;