Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 84b3d9723e | |||
| 7ead63957c |
16
CHANGELOG.md
Normal file
16
CHANGELOG.md
Normal 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
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
|
||||
@@ -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
|
||||
) {
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user