2 Commits

Author SHA1 Message Date
84b3d9723e changelog 2025-08-18 22:43:08 +09:00
7ead63957c renderer soemthing 2025-08-18 22:39:05 +09:00
8 changed files with 140 additions and 7 deletions

16
CHANGELOG.md Normal file
View File

@@ -0,0 +1,16 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
## [001] - 2025-08-18
### Added
- Multi-threaded calculation

View File

@@ -3,6 +3,7 @@ package org.walruslab.kepler;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
public class Kepler implements ModInitializer { public class Kepler implements ModInitializer {
public static final String MOD_ID = "kepler";
@Override @Override
public void onInitialize() { public void onInitialize() {

View File

@@ -2,15 +2,17 @@ package org.walruslab.kepler.client;
import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents; 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 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 { public class KeplerClient implements ClientModInitializer {
@Override @Override
public void onInitializeClient() { public void onInitializeClient() {
var renderer = new TrajectoryRenderer(); var renderer = new TrajectoryRenderer();
// var hudRenderer = new RhythmHudRenderer();
// hudRenderer.setupRenderer();
ClientEntityEvents.ENTITY_LOAD.register((entity, _a) -> { ClientEntityEvents.ENTITY_LOAD.register((entity, _a) -> {
if (entity instanceof PlayerEntity) renderer.setupRenderLine((PlayerEntity) entity); if (entity instanceof PlayerEntity) renderer.setupRenderLine((PlayerEntity) entity);
}); });

View File

@@ -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
) {
}

View File

@@ -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);
}
}

View File

@@ -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<RhythmHudNote> state) {
}
}

View File

@@ -1,9 +1,7 @@
package org.walruslab.kepler.render; package org.walruslab.kepler.trajectory;
import net.minecraft.entity.projectile.ArrowEntity; import net.minecraft.entity.projectile.ArrowEntity;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.walruslab.kepler.trajectory.Trajectory;
import org.walruslab.kepler.trajectory.TrajectoryHit;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -1,4 +1,4 @@
package org.walruslab.kepler.render; package org.walruslab.kepler.trajectory;
import com.mojang.blaze3d.opengl.GlStateManager; import com.mojang.blaze3d.opengl.GlStateManager;
import com.mojang.blaze3d.vertex.VertexFormat; import com.mojang.blaze3d.vertex.VertexFormat;
@@ -21,7 +21,6 @@ import net.minecraft.util.math.Vec3d;
import net.minecraft.util.math.Vec3i; import net.minecraft.util.math.Vec3i;
import org.joml.Vector3f; import org.joml.Vector3f;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import org.walruslab.kepler.trajectory.TrajectoryHit;
import org.walruslab.kepler.trajectory.item.ShootableItemFactory; import org.walruslab.kepler.trajectory.item.ShootableItemFactory;
import java.util.List; import java.util.List;